在laravel5.4中,从相关表的多个值中加载第一项

d7v8vwbk  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(404)

我有两个表'purchases'和'accounts\u purchase\u history'。购买历史上有许多帐户。所以我需要得到所有最新的历史记录。到目前为止我做了什么

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

但是这个查询只得到第一个购买历史,我怎么解决这个问题呢?

cwdobuhd

cwdobuhd1#

你可以使用 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
}

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

相关问题