bug

4.2的ORM有个问题,不知道是不是BUG

有两个表,一个主表一(book)个从表(cover),它们是一对一关系(book.id=cover.bid),查询主表时用with预载入从表数据,并加上排序(从表字段排序),代码

->with(array('cover'=>function($q){
$q->orderBy('size','desc');
}))->......

这个结果得不到用sql join类似结果
已邀请:

BruceWu16899

赞同来自:

这不是 bug,原来的设计就是这一回事
你查看他的查询 sql 便可知晓
他的 relationships - with 不是透过 join
这样的用法是先取得主表,然后在取得关联表的资料
所以你这个 orderBy 只会对 cover 内的资料处理

BruceWu16899

赞同来自:

补充,你必须改成用 join
Book::join('cover', 'book.id', '=', 'cover.bid')
->orderBy('cover.size', 'desc')
->with('cover')
->get();

要回复问题请先登录注册