Laravel 4:关系不是行id

时间:2013-09-29 23:18:24

标签: laravel laravel-4 relationship

您好我有一个名为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    //
                       /////////////

每当我从朋友那里得到一行时,它应该让关联用户也正确吗?

1 个答案:

答案 0 :(得分:0)

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

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

Laravel不会使用行ID,它会自动假设用户模型的密钥为user_id。如果你想更明确地说明这一点,你可以:

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