Laravel,如何确定查询构建器是否已包含"订单"?

Rob*_*Rob 5 php laravel eloquent laravel-5

如果关系还没有订单,我正试图去默认订单.但如果确实如此,我不使用默认值.

$q = $this->items();

if (empty($q->orders)) {
    $q = $q->order();
}
Run Code Online (Sandbox Code Playgroud)

请注意,这order()只是一个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';
});
Run Code Online (Sandbox Code Playgroud)

转储只是吐出查询构建器对象而不是绑定?

Rob*_*Rob 7

经过一番活动,终于开始了.

所以实际上这是一个Eloquent\BuilderQuery\Builder那么需要的实例:

$q->getQuery()->orders
Run Code Online (Sandbox Code Playgroud)

这使您可以访问查询对象.