如果关系还没有订单,我会尝试使用默认订单。但如果是这样,我不会使用默认设置。
$q = $this->items();
if (empty($q->orders)) {
$q = $q->order();
}
请注意,order()
只是 BaseModel
类中的默认方法。出于某种原因,当我尝试在查询构建器上调用 orders
属性时,它显示 Undefined property
,即使它是 Builder
类中的公共(public)属性.
不知道为什么,或者我该如何检查。
编辑:
我在路由中设置了一个完整的示例:
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';
});
转储只是吐出查询构建器对象而不是绑定(bind)?
最佳答案
经过一番折腾,终于搞定了。
所以实际上它是 Eloquent\Builder
的实例而不是 Query\Builder
所以需要做:
$q->getQuery()->orders
这使您可以访问查询对象。
关于php - Laravel,如何确定查询构建器是否已包含 "order"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937758/