【问题标题】:get only the selected column from the join table仅从连接表中获取选定的列
【发布时间】:2015-11-23 18:12:27
【问题描述】:

我下面有这个参考代码,首先第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 关系 hasOne)

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

不知道

选择(数组('user_id'))

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

【问题讨论】:

  • 对 laravel 不是很熟悉不过可以试试where('user_id', '=', $aa)

标签: php mysql laravel laravel-5 eloquent


【解决方案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')

更新:

如何从“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.user_id

【讨论】:

  • 第一个问题的答案是肯定的,'users'表的主列是'user_id','user_table'的外键是'user_id'列,它指的是'user_id'列'用户'表。当两者都加入时,如何从“user_details”中仅选择选定的列?有什么想法吗?
猜你喜欢
  • 2016-02-25
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 2018-03-28
  • 1970-01-01
相关资源
最近更新 更多