Kohana 3:has_many 和 order_by
如何在 Kohana 3 中订购使用 has_many 关联的查询?
How can i order a query that uses the has_many association in Kohana 3?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在 Kohana 3 中订购使用 has_many 关联的查询?
How can i order a query that uses the has_many association in Kohana 3?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
您是否尝试过类似
$model->items->order_by('fieldname')->find_all()
的方法?__get()
方法返回 Query_Builder 对象,而不是 Database_Result,因此您可以根据需要添加 QBuilder 的条件(where/order_by/etc)。Have you tried something like
$model->items->order_by('fieldname')->find_all()
?__get()
method returns Query_Builder object, not a Database_Result, so you can add QBuilder's conditions (where/order_by/etc) for your needs.根据
Kohana_ORM::__get()
实现 - 你不能。它所做的只是组合
where
条件,而无需添加排序:但是您可以编写自己的类
ORM
并在那里重新实现__get
。您需要重写我上面给出的部分(ifisset($this->_has_many[$column])
)或将控制传递给parent::__get( $column)
否则。在这种情况下,您可以随意向_has_many
设置数组(例如order_by
)添加一个参数,并使用它按相关模型进行排序。在伪代码中:
According to the
Kohana_ORM::__get()
implementation - you cannot.All it does is just composing
where
condition without any possibility of adding a sort:But you can write your own class
ORM
and reimplement__get
there. You need to rewrite a little the part I've given above (ifisset($this->_has_many[$column])
) or pass the control to theparent::__get($column)
otherwise. In this case you're free to add one more parameter to_has_many
setup array likeorder_by
and use it to order by the related models.In pseudocode: