2014-02-09 184 views
2
class Project extends Eloquent { 

     public function users() 
     { 
     return $this->belongsToMany('User','project_user','project_id','user_id') 
     ->withPivot('isLeader'); 
     } 
} 

class User extends Eloquent { 
    public function projects() 
    { 
     return $this->belongsToMany('Project','project_user','project_id','user_id') 
     ->withPivot('isLeader'); 
    } 
} 

我的数据透视表的名字是project_user有一个额外的列 “isLeader” ..透视表Laravel 4

,当我尝试附加:

$user= User::findOrFail($user_id); 
$user->projects()->attach($project_id); 

它不工作..我得到这个错误

Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key 
    constraint fails (`db`.`project_user`, CONSTRAINT `project_user_project_id_foreign` 
    FOREIGN KEY (`project_id`)REFERENCES `projects` (`id`) ON UPDATE CASCADE) (SQL: insert 
    into `project_user`() values()) 

不过,如果我使用$项目 - >用户() - >连接( '用户ID')代替,它的工作原理。

但是,我需要获取$ user-> projects()...但它不工作。

+0

问题是建立关系.. 回报$这个 - > belongsToMany ('Project','project_user','project_id','user_id') - > withPivot('isLeader'); 应该是.. return $ this-> belongsToMany('Project','project_user','user_id','project_id') - > withPivot('isLeader'); O.O – user3260759

+1

也许您可以将此作为回答以供将来参考。 –

+0

我没有足够的声望。请为我做。 Tnx – user3260759

回答

2

问题是建立关系..

 return $this->belongsToMany('Project','project_user','project_id','user_id') 
    ->withPivot('isLeader'); 

应..

return $this->belongsToMany('Project','project_user','user_id','project_id') 
    ->withPivot('isLeader'); 

OO