У меня есть 2 таблицы ( сообщений , ревизий ), и между ними существует связь A post имеет много ревизий (отношение один ко многим) Редакции В таблице есть столбец с именем статус ( утвержден или отклонен ) Теперь я хочу выбрать все сообщений , если его последняя версия утверждена Я перепробовал много методов, но я мог получить сообщений , которые имеют одобренный статус
Обновление
Я нашел хорошее решение в этом ответе
https://stackoverflow.com/a/53120558/9500574
Post::with([ 'revisions' => function($query) { $query->orderBy('created_at', 'desc')->where('status', 'approved')->limit(1); }])->get()->filter(function($item) { return $item->revisions->count() > 0; });
Сборник будет содержать только те сообщения с утвержденными изменениями.
Полагаю, этот способ может сработать, но я не уверен насчет first() внутри запроса.
first()
$posts = Post::whereHas('revisions', function($q){ $q->where('status','approved')->orderBy('created_at','desc')->first(); })->get();