我正在尝试从表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"."...
答案 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();