Laravel:通过查询构建器应用模型访问器

时间:2018-01-04 05:48:07

标签: laravel eloquent

我正在尝试为Laravel 5.5中的模型获取默认的Builder对象。

我尝试使用MyModel::getQuery()MyModel::toBase()来获取稍后链接的默认Builder结果。这是为了便于查询的可配置起点。即,如果where约束存在值,则起点为MyModel::where()。如果没有,则getQuery()toBase()

以后应用的子句可能对任一路径都是通用的,因此需要默认构建器。

这似乎有效,但并不完全符合预期。如果从哪里开始,则应用模型访问器。如果以getQuery()toBase()开头,则不会应用访问者。

这是设计还是错误?是否有更好的方法来启动查询链,而不是使用where('column_1', 'LIKE', '%')orWhere('column_2', '')这样的虚拟子句,因为它只是一种解决方法,而且我不相信这会非常有效?

1 个答案:

答案 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