2014-02-09 88 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