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

问题描述 投票:0回答:2

我正在为使用 Laravel 8 框架的客户制作车间机械师目录,他想要一个功能来审查车间并选择与客户合作的多个机械师。 每个车间有多个评论,每个评论可以有相同或不同的机械师在车间工作。

请帮我弄清楚如何:

  1. 像这样获取链接到每个机械师的所有评论 $mechanic->reviews();
  2. 从所有车间中找到最受好评的机械师。

请告诉我如何进行这项工作。

非常感谢。

以下是我到目前为止建立的关系,我无法弄清楚上面的几点。

工作坊桌 姓名、电子邮件、电话、地址

力学表 姓名、电子邮件、电话、地址、workshop_id

评论表 姓名、评论、评论、workshop_id、状态(活动、待定、拒绝)

mechanic_review 表(用于将多个机械师附加到每个评论) 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');
}
laravel relationship review
2个回答
0
投票

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

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

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


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