例如,假设我的用户表有一个引用外部表的列,如HEIGHT。如果我使用:
return \Auth::user()->height_id;
在我的控制器中,我得到了HEIGHT表中引用的主键的id,但是如何检索外表中引用行内的数据呢?
答案 0 :(得分:0)
你应该试试
return \Auth::user()->height()->YOUR_HEIGHT_TABLE_FIELD;
预计您已经建立了User
和Height
模型之间的关系。
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'));
}