我有两个表“ purchases”和“ accounts_purchase_history”。购买有很多帐户历史记录。因此,我需要获取所有具有最新历史记录的商品。
到目前为止我做了什么

 $purchases = Purchases::with(['accounts_purchase_historie' => function($query){
            return $query->orderBy('id','DESC')->first();
        }])->orderBy('id','DESC')->where('status','extended')->get();


但是此查询仅获取第一个购买历史记录,我该如何解决?

最佳答案

您可以使用HasOne关系:

public function latest_history() {
    return $this->hasOne(...)->orderBy('id','DESC');
}

$purchases = Purchases::with('latest_history')
    ->orderBy('id','DESC')
    ->where('status','extended')
    ->get();

foreach($purchases as $purchase) {
    $purchase->latest_history
}


但是,这仍将在后台从数据库中获取所有历史记录。

10-07 19:38