在Laravel中查询USER时,如何从外表返回数据?

时间:2015-07-07 17:42:42

标签: sql laravel eloquent key

例如,假设我的用户表有一个引用外部表的列,如HEIGHT。如果我使用:

return \Auth::user()->height_id;

在我的控制器中,我得到了HEIGHT表中引用的主键的id,但是如何检索外表中引用行内的数据呢?

2 个答案:

答案 0 :(得分:0)

你应该试试

return \Auth::user()->height()->YOUR_HEIGHT_TABLE_FIELD;

预计您已经建立了UserHeight模型之间的关系。
Read More..

答案 1 :(得分:0)

每次评论再次

这取决于用户与身高的关系。

我认为用户只有一个高度。如果是这种情况,您可以像这样设置用户和身高模型。

用户

class User extends Model {
    /**
     * The user's height
     * @see App\Height
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function height()
    {
        // if you break naming conventions you can specify a different key.
        // I am unclear because I do not know your db structure.
        // from docs:
        // return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
        return $this->hasOne('App\Height');
    }
}

<强>高度

class Height extends Model {
    /**
     * The height of a user
     * @see App\Height
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function user()
    {
        return $this->hasOne('App\User');
    }

}

<强>控制器

public function show($id)
{
    $user = User::with('height')->firstOrFail($id);
    return view('yourview')->with(compact('user'));
}

查看

{{ $user->height->height }}
{{ $user->height->id }}

无论你做什么,我都会阅读Eloquent: Relationships。它应该是有帮助的。

<强>附录

有几种方法可以解决这个问题。这些都会导致两个查询,我很确定你可以用一个查询来实现。

public function show($id)
{
    $user_id = \Auth::user()->id;
    $user = User::with('height')->firstOrFail($user_id);
    return view('yourview')->with(compact('user'));
}

public function show($id)
{
    $user = \Auth::user();
    $height = $user->height();
    return view('yourview')->with(compact('user'))->with(compact('height'));
}

public function show($id)
{
    $user = \Auth::user();
    $height = Height::find($user->height_id);
    return view('yourview')->with(compact('user'))->with(compact('height'));
}