因此,这里的情况是我试图在OctoberCMS中创建一个简单的作用域,该作用域将允许我使用构建器插件列表组件过滤查询。在我的模型中,我将范围定义为:
public function scopeFirst($query)
{
return $query->where('practice_name',1);
}
这应该仅约束查询以仅获取该值为1的记录。组件正在识别此范围,并允许我从下拉列表中进行选择,如我的index.htm文件所示:>
[builderList]
modelClass = "vetadmin\Practicedetails\Models\Practicedetails"
scope = "scopeFirst"
displayColumn = "id"
noRecordsMessage = "No records found"
detailsPage = "-"
detailsUrlParameter = "id"
pageNumber = "{{ :page }}"
有人对导致其不应用约束的原因有任何想法吗?当前正在返回所有记录。该文档对此没有特别详尽的说明,只是建议您需要在插件模型php文件中定义范围(如我所做的那样)
https://octobercms.com/docs/database/model#query-scopes
是我要参考的文档。
谢谢。
答案 0 :(得分:1)
嗯,这对larval eloquent model
来说有点困惑
我已经测试了您的代码和范围
然后我才意识到scopeFirst
可以像这样$modal->first()
<= this is issue its reserved method
据我所知first
[ref:https://laravel.com/docs/5.7/eloquent]是从collection/models
获取第一条记录的方法。 [因此,您的范围受到了这种对待,最终无济于事!]
因此,只需更改您的范围名称,例如
scopeFirstPractice
等。可以解决我们的问题。
并且通常使用
[builderList]
modelClass = "vetadmin\Practicedetails\Models\Practicedetails"
scope = "scopeFirstPractice"
绝对可以。 [我已经测试过。 ]
如有疑问,请发表评论。