Laravel Eloquent получает последнюю сводную запись в методе модели

#php #mysql #laravel #orm #eloquent

#php #mysql #laravel #orm #eloquent

Вопрос:

Как и в названии, возможно ли достичь чего-то подобного?

 class Sign extends Eloquent
{
   public function lastStatus()
   {
      return $this->belongsToMany(Status::class)
                  ->withPivot('timestamp')
                  ->orderBy('timestamp', 'desc')
                  ->take(1);
   }
}
  

Между sign и status существует связь «многие ко многим», у меня есть сводная таблица sign_status . Каждое назначение в sign_status имеет свое timestamp значение, поэтому я могу получить информацию о последнем статусе, но как добиться этого в методе модели?

Необходимо сделать это таким образом, потому что тогда я создам запрос типа:

 Gantry::whereHas('sign.lastStatus', function($q){...});
  

И я буду фильтровать по статусу, который является ошибкой, чтобы получить порталы, у которых по крайней мере в одном знаке есть ошибка — но мне нужно искать эту ошибку в последних статусах каждого знака.

Спасибо!

Ответ №1:

Я думаю, что это должно быть $this->hasMany(Status::class)

Комментарии:

1. извините за мое непонимание, я думал, что в данном случае это должно быть one-to-many отношение