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

问题描述 投票:0回答:1

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

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

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

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

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

laravel eloquent
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.