我在下面有此参考代码,首先是第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”。有什么想法,请帮忙吗?

而且还有一种方法我可以只选择此联接表中的选定列(雄辩的关系hasOne)

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


我不知道


  选择(数组('user_id'))


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

最佳答案

第一个问题:

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


您的用户表(或模型指向的任何地方)中是否都有user_id列?用户模型中是否有User方法?

第二个问题:

您可以选择

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


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

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


更新:


  我怎样才能只从'user_details'中选择选定的列?
  两者都一起加入?


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

09-12 01:11