我在Laravel的这种多对多关系中遇到了困难 . 我有多对多的关系,项目和人 . 我还有第三个表,角色(有2列:id,name),其中包含一个人可以在项目中拥有的角色(在这种情况下,“演员”,“导演”等) . 数据透视表person_project具有列“person_id”,“project_id”和“role_id” . 我成功地让所有与项目相关的人都使用了
$project = Project::find($id);
$project->persons;
但是,我怎样才能让具有特定角色的人参与项目?我怎么能挽救这种关系呢?
楷模:
// Project.php
class Project extends Eloquent {
protected $table = 'projects';
public $timestamps = false;
public function persons() {
return $this->belongsToMany('Person');
}
}
// Person.php
class Person extends Eloquent {
protected $table = 'persons';
public $timestamps = false;
public function projects() {
return $this->belongsToMany('Project');
}
}
2 回答
This article有助于弄清楚检索关系 . Eloquent的withPivot()和join()方法是让它发挥作用的关键 .
我从Laravel的文档中找到了插入部分:http://laravel.com/docs/eloquent#inserting-related-models在这个例子中,Input :: get('directors')是一个person_ids数组,被选择连接到"director"的角色 . 对于Input :: get('actors'),同样的交易 .
请尝试以下方法之一:
如果您使用 Laravel 4.1 :
Laravel 4 and 4.1: