我有3个表格:用户,教师和帖子。
用户:
id - 整数
name - string
教师:
id - 整数
teacher_id - 整数
user_id - 整数
name - string
帖子:
id - 整数
user_id - 整数
title - string
用户型号:
class User extends Model
{
public function teachers()
{
return $this->hasMany('App\Teacher');
}
}
教师型号:
class Teacher extends Model
{
public function posts()
{
return $this->hasMany('App\Post', 'user_id','teacher_id');
}
}
? 问题 是我如何使用这样的:
$user = User::find(1);
$teacher_posts = $user->teachers()->posts
答案 0 :(得分:0)
我对laravel有点新意,但这是我的看法。
我所意识到的是,通常你的多对多关系需要一个数据透视表。
用户 :( id,name)
教师 :( id,teacher_id,姓名)
teacher_users :( id,user_id,teacher_id)
帖子 :( id,user_id,title)
你的Eloquent模型看起来就像这样。
class User extends Model
{
public function teachers()
{
return $this->belongsToMany('App\Teacher');
}
public function posts()
{
return $this->hasMany('App\Post');
}
}
class Teacher extends Model
{
public function users()
{
return $this->belongsToMany('App\User');
}
}
$user = User::find(1);
$user_posts = $user->posts();