【发布时间】:2014-01-26 07:22:40
【问题描述】:
我想我想做的很简单。在我的控制器中,我有代码:
$list = SiteCategory::where('type','=','A')->get();
它返回一个标准的 eloquent 集合对象。但是,有时当我检索类别时,我希望它们首先以特定方式排序。那么我可以在我的模型中添加一些功能吗,例如:
Class SiteCategory extends Eloquent {
public function mySpecialFunction(){
// retrieve all categories, manipulate them in some way and return.
}
}
然后我该如何调用这个函数?我不明白,我读过的教程和问题也无济于事。例如,在 SO 上的this question 中,他似乎暗示他可以这样调用他的函数:
SiteCategory->mySpecialFunction()
没听懂?
【问题讨论】:
-
为什么不在它们被检索到之后进行排序呢?如果排序是通过函数完成的,它总是在数据库获取之后完成。
-
好的,所以如果我把这个函数放在我的模型中,那么是否可以将它链接到像 siteCategory::All()->mySpecialFunction() 这样的雄辩的调用上或者我必须声明它作为静态函数并单独调用?
-
这个问题有一个使用自定义排序功能的例子:stackoverflow.com/questions/15533659/sorting-data-with-eloquent
-
谢谢,Stefan,我现在已经解决了这个问题。关键是在我的控制器中声明 $variable = new SiteCategory() 然后 $variable->mySpecialFunction() ,并在 mySpecialFunction() 中使用 $this 访问 eloquent