laravel - 由许多人组成的3个步骤

时间:2015-08-02 19:45:02

标签: php laravel laravel-5 relational-database

我有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

1 个答案:

答案 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();

Check out the documentation here for more details