у меня 3 стола
entry (
id,
title,
other_stuff)
entry_award (
id,
award_id,
entry_id)
award (
id,
name,
type)
Я пытаюсь создать запрос laravel, который позволяет мне получить все записи, которые имеют награды, и упорядочить их по награде. Тип ASC
$Entries = Entry::with('award')
->whereHas('award', function ($query) {
$query->orderBy('award.award_id','ASC');
})->paginate(20);
Но это не работает.
Это версия sql
SELECT DISTINCT entry.*
FROM entry, award, entry_award
WHERE entry.id = entry_award.entry_id
AND award.id = entry_award.award_id
ORDER BY award.type ASC;
Теперь я попытался просто использовать для этого raw sql, но проблема, похоже, в том, что laravel не распознает результат как модели / объекты Entry. И мне нужно получить другие входные отношения позже в html через блейд.
Итак, как мне сделать запрос построителя запросов, который получит все записи, которые имеют награды, и упорядочит их по значениюward.type
или используйте сырой sql, но Laravel увидит его как массив Entry
объекты, а не просто массив значений JSON.
class Entry extends Model {
public function entry_award(){
return $this->belongsToMany('App\Award', 'entry_award');
}
}
class Award extends Model {
public function entries() {
return $this->belongsToMany('App\Entry', 'entry_award');
}
}