仅从连接表中获取选定的列

时间:2015-11-22 07:23:56

标签: php mysql laravel laravel-5 eloquent

我在下面有这个参考代码,首先是第1行

$aa = users_details::select(array('id', 'user_id'))->where('id', '=', $request->id)->first(); //first line
$bb = User::select(array('user_id'))->where('user_id', '=', $aa->id)->with('user_details')->first(); //second line

第一行返回13,这是正确的,而第二行返回' null'不应该这样,因为实际上记录的user_id为' 13'。有什么想法,请帮忙吗?

还有一种方法我只能选择此连接表中的选定列(Eloquent relationship hasOne)

$bb = User::select(array('user_id'))->where('user_id', '=', $aa->id)->with('user_details')->first();

我不知道是否

  

选择(阵列(' USER_ID'))

是从连接表中仅选择所选列的正确选项。有什么想法,请帮忙吗?

1 个答案:

答案 0 :(得分:1)

第一个问题:

$bb = User::select(array('user_id'))->where('user_id', '=', $aa->id)->with('user_details')->first();

用户中是否有user_id列(或User模型引用的表)?你在用户模型中有user_details方法吗?

第二个问题:

您可以选择

User::select('user_id', 'username', 'sex')

如果联接表中的列名相同,则可以选择

User::select('users.user_id as a', 'users.username', 'users.sex', 'user_details.user_id as b')

<强>更新

  

如何选择&#39; user_details&#39;中的选定列?什么时候   两人都加入了一起?

User::select('users.user_id as user_id', 'users.username', 'users.sex', 'user_details.user_id as user_details_id')->join('user_details','user_details.user_id','=', 'users.id' )->where('users.id', '=', $aa->id)->first();

要从连接表中选择列,只需在列名前加上表名,例如user_details.user_id