如果关系没有订单,我会尝试默认订单。但如果确实如此,我就不会使用默认设置。
$q = $this->items();
if (empty($q->orders)) {
$q = $q->order();
}
请注意,order()
只是a BaseModel
类中的默认方法。出于某种原因,当我尝试在查询构建器上调用orders
属性时,它会显示Undefined property
,即使它是Builder
类中的公共属性。
不确定原因,或者我如何检查这一点。
编辑:
我在路线中设置了一个完整的例子:
class Test extends \Illuminate\Database\Eloquent\Model {}
$router->get('/test', function () {
$test = new Test;
$q = $test->select('id')->orderBy('id', 'desc');
$bindings = $q->getRawBindings();
var_dump($bindings);
return 'test';
});
转储只是吐出查询构建器对象而不是绑定?
答案 0 :(得分:5)
所以实际上它是Eloquent\Builder
而不是Query\Builder
的实例所以需要这样做:
$q->getQuery()->orders
这使您可以访问查询对象。
答案 1 :(得分:1)