链接到多个表的评论的Laravel关系

cczfrluj  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(100)

我正在为一个使用Laravel 8框架的客户端编写一个研讨会机械师目录,他希望有一个功能来审查研讨会,并选择与客户端合作的多个机械师。每个研讨会都有多个审查,每个审查可以有相同或不同的机械师在研讨会上工作。
请帮助我弄清楚如何:
1.获取链接到每个机械师的所有评论,像这样$mechanic-〉reviews();
1.查找所有车间的顶级机械师。
请让我知道如何使这项工作。
非常感谢。
下面是我到目前为止所做的关系,我不能弄清楚上面的几点。
研讨会表名称、电子邮件、电话、地址
机械表名称、电子邮件、电话、地址、车间标识
reviews表名称、reviews、comment、workshop_id、status(active、pending、rejected)
mechanic_review表(用于将多个mechanics附加到每个审阅)mechanic_id,review_id

Workshop model

public function reviews() {
    return $this->hasMany('App\Models\review');
}

public function mechanics() {
    return $this->hasMany('App\Models\Mechanic');
}

Mechanic model

public function workshop() {
    return $this->belongsTo('App\Models\Workshop');
}

Review model

public function workshop() {
    return $this->belongsTo('App\Models\Workshop');
}
z4iuyo4d

z4iuyo4d1#

1.要获取链接到每个机制的所有评论,可以在使用belongsToMany关系的Mechanic模型上定义一个reviews()方法。然后,您可以使用WITH访问单个研讨会的所有机制沿着评论。
1.要获得高评级的机械师,您需要在评论表中添加一个属性,该属性应该是整数类型,以便您可以获得每个机械师的评级数量。然后,您可以通过从评论表中获得最高评级的车间的机械师列表来获得单个或多个机械师,您可以将其限制为1到10或您选择的任何数字。$mechanics = Mechanic::withCount('reviews')-〉orderByDesc('ratings')-〉take(10)-〉get();

6jjcrrmo

6jjcrrmo2#

您可以使用透视表- mechanic_review表在mechanic模型中定义关系以返回mechanic评论。

public function mechReviews()
{
    return $this->hasMany(Review::class, 'mechanic_review','mechanic_id','review_id');
}

现在您可以使用$mechanic-〉mechReviews访问技工评论。

相关问题