2013-09-29 62 views
0

嗨,我有一個叫做Friend的模型,它有一個id,user_id和一個friend_id。 我想建立一個關係到用戶模型,不是通過朋友上的行ID,而是朋友上的user_id。也就是如果我做hasOne('User', id);它將採取id爲行上的朋友,並做一些像SELECT * FROM users WHERE id = <friend_row_id>相反,我會它SELECT * FROM users WHERE id = <friend_user_id>我必須手動執行此操作嗎?或者有沒有辦法來定義這種關係?Laravel 4:關係不是按行ID

P.S.我是新來的關係,所以如果我問某種愚蠢的,對不起!編輯: 這是我的atm代碼。

$ret = array(); 
     if(Auth::check()){ 
      $friend = new Friend(); 
      $ret['friends'] = $friend->where('friend_id', '=', Auth::user()->id)->get(); 
     } 
     error_log(print_r(DB::getQueryLog(),true)); 
    return View::make('index.index', $ret); 

的朋友模型具有功能宣稱的關係如下:

public function user(){ 
     $this->hasOne("User"); 
    } 

的朋友和用戶表:

Friend    User 
    /////////////// ///////////// 
    // id  // // id  // 
    // user_id // // email // 
    // friend_id // // password// 
    /////////////// // name // 
         ///////////// 

有了這個,每次我從朋友得到一個排,它應該得到關聯的用戶以及正確的?

回答

0

如果用戶模型是由user_id領域的朋友模型涉及到朋友的模型,那麼這應該是罰款:

return $this->hasOne('User'); 

Laravel不會使用該行ID,它會自動承擔關鍵到用戶模型是user_id。如果您想對此更加明確,您可以:

return $this->hasOne('User', 'user_id'); 
+0

爲了更加清晰,添加了編輯。 – samuraiseoul