У меня есть две таблицы "покупки" и "account_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
}
Однако это все равно будет извлекать все истории из базы данных в фоновом режиме.
$purchase->accounts_purchase_historie->first()
?