如何将值与laravel中的连接查询一起存储到表中?

时间:2016-09-14 14:44:36

标签: laravel join laravel-5.2 inner-join

我有三张桌子: - > - 学生(PK用户ID) - 老师(PK teacherid,FK用户ID参考...) - 评级(PK rateid,FK userid ref .....,FK teacherid ref ....) 我想通过加入其他表插入评级表。我如何在Laravel 5.2中实现这一目标?请帮帮我吧!

1 个答案:

答案 0 :(得分:0)

这可以使用Polymorphic relationship在Larvel中完成

为简化起见,这是一个示例数据库结构:

student
    id - integer
    user_id - integer

teacher
    id - integer
    user_id - integer

ratings
    id - integer
    value - integer
    rateable_id - integer
    rateable_type - string

rateable_id对应于idteacher上的student rateable_type是可评估模型的类名称的字符串。这将自动添加,如下所述。

您的模型应如下所示:

Rating.php

class Rating extends Model
{
    public function rateable()
    {
        return $this->morphTo();
    }
}

Teacher.php

class Teacher extends Model
{
    public function rating()
    {
        return $this->morphOne(Rating::class, 'rateable');
    }
}

Student.php

class Student extends Model
{
    public function rating()
    {
        return $this->morphOne(Rating::class, 'rateable');
    }
}

现在,这是一个关于如何使用它的小例子。

$student = Student::find(1);

$rating = new Rating();
$rating->value = 10;

$student->rating()->save($rating);

首先你找到一个学生。然后,您创建一个新的评级并添加一个值。

当您执行$student->rating()->save($rating);时,rateable_idrateable_type会为您填写,并通过关系为您的Student.php模型提供正确的值。简单的Laravel。