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>我必须手动执行此操作吗?或者有没有办法定义这种关系?

PS我是新来的关系,所以如果我问一些愚蠢的事情,对不起!

编辑:这是我的自动取款机代码。

$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    //
                       /////////////

每次我从朋友那里得到一行时,它也应该得到相关的用户是正确的吗?

4

1 回答 1

0

如果用户模型通过朋友模型user_id上的字段与朋友模型相关,那么这应该没问题:

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

Laravel 不会使用行 ID,它会自动假设 User 模型的键是user_id. 如果您想更明确地说明这一点,您可以:

return $this->hasOne('User', 'user_id');
于 2013-09-30T00:48:39.390 回答