Стремитесь загрузить первый элемент из нескольких значений из связанной таблицы в laravel 5.4

0

У меня есть две таблицы "покупки" и "account_purchase_history". покупка имеет много истории счетов. Поэтому мне нужно получить все покупки с последней историей. Что я сделал до сих пор

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

Но этот запрос получает только первую историю покупок. Как я могу это решить?

  • 0
    Вы хотите только новейшую историю по причинам производительности? Или вы просто хотите избежать $purchase->accounts_purchase_historie->first() ?
  • 0
    Этот запрос возвращает историю только первой покупки, другая история покупок не возвращается. Мне нужна только последняя история покупки, так как в процессе покупки может пройти несколько редактирований. Так что только последнюю историю редактирования я хочу получить
Показать ещё 4 комментария
Теги:
eloquent
laravel-5
eager-loading

1 ответ

0

Вы можете использовать отношения 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
}

Однако это все равно будет извлекать все истории из базы данных в фоновом режиме.

  • 0
    Можете ли вы дать отзыв об ответе?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню