OctoberCMS范围不适用

时间:2018-11-30 13:16:47

标签: eloquent octobercms octobercms-plugins

因此,这里的情况是我试图在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

是我要参考的文档。

谢谢。

1 个答案:

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

绝对可以。 [我已经测试过。 ]

如有疑问,请发表评论。