我有3张桌子
entry (
id,
title,
other_stuff)
entry_award (
id,
award_id,
entry_id)
award (
id,
name,
type)
我正在尝试创建一个laravel查询,该查询可让我获取所有具有奖励的条目,并按award.type 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;
现在,我尝试仅使用原始sql,但是问题似乎是laravel无法将结果识别为Entry模型/对象。而且我需要稍后通过刀片在html中获得其他Entry关系。
那么我该如何进行查询-生成器查询,以获取具有奖励的所有条目并按award.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');
}
}