Laravel在哪里有eloqvent关系

时间:2016-07-26 15:39:43

标签: php laravel

我正在尝试从表order_status_history中获取具有相关属性的表命令中的对象。从表order_status_history,我只需要状态为'Reviewing'的最后一条记录,所以我使用字段created_at排序asc。到目前为止我的代码是,但我得到错误。

$orders = Order::GetOrderHistoryReviewing()->get();

 public function scopeGetOrderHistoryReviewing($query)
    {
        return $query->whereHas('statusHistory', function($q) {

           $q->where('status', 'Reviewing')->orderBy('created_at','desc')->first();

        });
    }

我需要一个与第二个表有关系的对象

这是我的错误

[2016-07-27 08:37:26] dev.ERROR: exception 'PDOException' with message 'SQLSTATE[42P01]: Undefined table: 7 ERROR:  missing FROM-clause entry for table "orders"
LINE 1: ...ries" where "order_status_histories"."order_id" = "orders"."...

1 个答案:

答案 0 :(得分:0)

根据您的问题,您显然正在尝试创建一个范围,该范围会返回状态为“正在审核”的订单,并按降序对结果进行排序。

您需要从first()子查询中移除$q来电,并将orderBy移至$query的末尾。你的代码应该是这样的。

public function scopeGetOrderHistoryReviewing($query)
{
    return $query->whereHas('statusHistory', function($q) {

       $q->where('status', 'Reviewing');

    })->orderBy('created_at','desc');
}

然后你可以这样做:

$orders = Order::GetOrderHistoryReviewing()->get();
//OR to get the first record
$first_order = Order::GetOrderHistoryReviewing()->first();
相关问题