我需要订购
Content::with('blocks.settings')->where('slug', $slug)->first();
按“订单”列阻止,我该怎么做?
我知道这种方法:
with(array('model' => function($query) {
$query->orderBy('result', 'DESC');
}))
但我不确定这对我的情况有何影响?我正在使用嵌套的预先加载,在我看来,上述方法只适用于单级急切加载?
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:2)
这可以解决您的问题:
Content::with(array(
'blocks' => function($query) {
$query->orderBy('order', 'DESC');
},
'blocks.settings'
))->where('slug', $slug)->first();;
首先我们告诉它加载块并按order
列对它们进行排序。数组中的第二个元素也告诉您加载所有块的设置。
答案 1 :(得分:1)
在blocks
模型上添加约束
Content::with(array(
'blocks.settings' => function($query) {
$query->orderBy('order', 'DESC'); // this constraint works on blocks model
}
))->where('slug', $slug)->first();
如果您想在settings
模型上添加约束,请尝试使用
Content::with(array(
'blocks'=> function($query) {
$query->with(array(
'settings'=> function($query) {
$query->orderBy('order', 'DESC'); // this constraint works on blocks model
}
))
->ordery('order', 'DESC'); // this constraint works on blocks model
}
))->where('slug', $slug)->first();