我有三张桌子: - > - 学生(PK用户ID) - 老师(PK teacherid,FK用户ID参考...) - 评级(PK rateid,FK userid ref .....,FK teacherid ref ....) 我想通过加入其他表插入评级表。我如何在Laravel 5.2中实现这一目标?请帮帮我吧!
答案 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
对应于id
或teacher
上的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_id
和rateable_type
会为您填写,并通过关系为您的Student.php
模型提供正确的值。简单的Laravel。