2013-09-29 37 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