我工作太多mysql大视图。我不想使用雄辩模型的意见。
我创建了“ViewBalance\Support\Facades\DB”。一切都如我所愿。
但我需要为公司范围设置init()方法。
如果没有init()方法,如何使用全局作用域?
视图模型
<?php
namespace App\Models\Views;
use App\Facades\CoreService;
use Illuminate\Support\Facades\DB;
class ViewBalance extends DB
{
const COMPANY_COLUMN = 'company_id';
const TABLE = 'view_balances';
public static function init()
{
return parent::table(self::COMPANY_COLUMN)
->where(self::COMPANY_COLUMN, CoreService::companyId());
}
}
控制器
<?php
$data = ViewBalance::init()->get(); // Worked!
public function scopeActive($query)
{
return $query->where('active', true);
}
或者
public function scopeInactive($query)
{
return $query->where('active', false);
}
我已经回答了我自己的问题。因为,我不想把我的问题编辑得更复杂。我想谈谈解决这个问题的办法。
我在Laravel模型中添加了$table_view变量和getView()方法。如果你愿意,你可以为干净的代码创建trait。
可以方便地访问视图。它也是主模型的一部分。
例如
class Account extends Model {
protected $table = 'accounts';
protected $table_view = 'view_accounts';
public function getView()
{
return \DB::table($this->table_view)->where('global_scope', 1);
}
}
拉威尔账户控制员
class AccountController extends Controller {
public function index()
{
$items = (new Account)->getView()->paginate(20);
}
}
假设我们正在使用Laravel的查询生成器: 我正在寻找一个等效的SQL: 当我必须键入大量select和WHERE(或者通常在select的列alias中包含别名,并且它在结果数组中使用)时,这将特别有用。如果没有任何表别名,我需要输入更多的内容,所有内容的可读性都会降低。在laravel文档中找不到答案,有什么想法吗?
我使用laravel雄辩到CRUD数据。我的问题是,我不知道如何使用laravel雄辩的ORM进行UNION查询。你能帮我解决我的问题吗 这是我想要在laravel雄辩或查询生成器中实现的示例查询
Laravel Eloquent的save()方法实质上是执行查询生成器的工作吗? 查询生成器: 雄辩的: 如果这是真的,那么Eloquent的也是如此吗?我正在看Laravel的官方视频教程,我看到作者在控制器中使用了雄辩的和。这就是查询生成器和雄辩的区别吗?我们可以使用雄辩的内部控制器?
我对雄辩有一个奇怪的问题,我试图做到以下几点: Laravel Framework报告一个错误: Connection.php第761行中的QueryException:SQLSTATE[42000]:语法错误或访问冲突:1055“permission.id”不在GROUP BY中(SQL:选择,作为,
如何使像下面的sql查询这样有说服力的范围 表属性(id,标题,段塞,category_id,location_id,图像) 表类别(id,名称,段塞) 表城市(id,名称,鼻涕虫) 我需要的简单sql查询 我想在模型中创建雄辩的作用域
我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?