我正在尝试为Laravel 5.5中的模型获取默认的Builder对象。
我尝试使用MyModel::getQuery()
和MyModel::toBase()
来获取稍后链接的默认Builder结果。这是为了便于查询的可配置起点。即,如果where约束存在值,则起点为MyModel::where()
。如果没有,则getQuery()
或toBase()
。
以后应用的子句可能对任一路径都是通用的,因此需要默认构建器。
这似乎有效,但并不完全符合预期。如果从哪里开始,则应用模型访问器。如果以getQuery()
或toBase()
开头,则不会应用访问者。
这是设计还是错误?是否有更好的方法来启动查询链,而不是使用where('column_1', 'LIKE', '%')
或orWhere('column_2', '')
这样的虚拟子句,因为它只是一种解决方法,而且我不相信这会非常有效?
答案 0 :(得分:1)
您是否尝试过使用 query()?
$model = MyModel::query();
if (example == 'test') {
$model = $model->where('column', 0);
}
if (example2 == 'test2') {
$model = $model->where('another_column', 'test');
}
$model = $model->get();
<强>参考强>: https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Model.html#method_query