您好我有一个名为Friend的模型,它有一个id,user_id和一个friend_id。
我想建立一个与朋友的行ID无关的用户模型的关系,而不是朋友的user_id。 AKA,如果我hasOne('User', id);
,它将获取朋友的行的ID并执行类似SELECT * FROM users WHERE id = <friend_row_id>
的操作而不是我会SELECT * FROM users WHERE id = <friend_user_id>
我必须手动执行此操作吗?或者有没有办法来定义这种关系?
P.S。我对关系很陌生,所以如果我问一些愚蠢的事,抱歉!
编辑: 这是我的代码。
$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);
Friend模型具有如下声明关系的函数:
public function user(){
$this->hasOne("User");
}
朋友和用户表格是:
Friend User
/////////////// /////////////
// id // // id //
// user_id // // email //
// friend_id // // password//
/////////////// // name //
/////////////
每当我从朋友那里得到一行时,它应该让关联用户也正确吗?
答案 0 :(得分:0)
如果用户模型通过好友模型上的user_id
字段与好友模型相关,那么这应该没问题:
return $this->hasOne('User');
Laravel不会使用行ID,它会自动假设用户模型的密钥为user_id
。如果你想更明确地说明这一点,你可以:
return $this->hasOne('User', 'user_id');