Laravel有ManyToMany关系,但是在第三个表中按值排序

时间:2019-04-22 15:42:15

标签: laravel

我有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');
    }
}

0 个答案:

没有答案