【发布时间】:2017-07-12 12:50:52
【问题描述】:
我目前正在尝试在数组中定义的模型上创建一个调用不同范围查询的函数,例如 scopeByLocation() 或 scopeByPublished()。我已经通过 [this link][1] 了解了基础知识。但是,当尝试访问在相应模型中定义的自定义查询范围时,我收到以下错误:"Call to undefined method Illuminate\Database\Query\Builder::ForLocation($location)->get()"。
我想要实现的是一个单一的方法,它遍历模型数组中的每个模型并检索和调用模型上的正确 scopeQuery,如下所示:
$modelElements = $model::{$queryScope}();
例如$model = 'Modules\News\Models\Article'
而$queryScope 是模型本身中定义的查询范围。例如。 scopeForLocation($location).
我已经测试了$queryScope = 'all' 并且得到了很好的结果,但是当我尝试访问存在于例如 Location 模型中的自定义 queryScope ($queryScope = 'ForLocation($location)->get') 时,我收到以下错误:"Call to undefined method Illuminate\Database\Query\Builder::ForLocation($location)->get()" .
所以这一切都发生在一个 foreach 循环中,其中我的模型数组中的每个模型都被调用,然后在模型上调用相应的 queryScope。
为什么$queryScope = 'all' 方法适用于我的动态模型,但其他作用域抛出错误?我真的希望有人能帮助我在这个问题上找到正确的方向。
提前致谢,
J。能源部。
【问题讨论】: