items(); if (empty($q->orders)) { $q = $q->or-6ren">
gpt4 book ai didi

php - Laravel,如何确定查询构建器是否已包含 "order"?

转载 作者:可可西里 更新时间:2023-10-31 22:10:35 27 4
gpt4 key购买 nike

如果关系还没有订单,我会尝试使用默认订单。但如果是这样,我不会使用默认设置。

$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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com