我有一个表,它有一个列interviewer_id,它等于users表的id。我正在根据控制器中的interviewer_id对数据进行分组,并希望从users表中获取属于每个组的id的名称。这是我尝试过的
$int_payment = IntPayments::where('month',$month_year)->groupBy('interviewer_id')->get();
foreach ($int_payment as $inter) {
$inters = User::where('id',$inter->interviewer_id)->get();
}
return response()->json(['inters',$inters]);在这里,我的响应只显示了它通过User获取的一个组数据。我想从users表中获取行,该行的id是组的ID
这就是我真正想要的。当我返回$int_payment作为响应时,我得到了这个响应。
["inters",[{"id":2,"candidate_id":"13","interviewer_id":"1","profile_id":"","exp":"5-10","payment_status":"unpaid","month":"Feb 2017","created_at":"2017-02-08 04:56:40","updated_at":"2017-02-08 04:56:40"},{"id":4,"candidate_id":"13","interviewer_id":"2\r\n","profile_id":"","exp":"5-10","payment_status":"unpaid","month":"Feb 2017","created_at":"2017-02-08 04:56:40","updated_at":"2017-02-08 04:56:40"},{"id":1,"candidate_id":"13","interviewer_id":"4","profile_id":"","exp":"5-10","payment_status":"unpaid","month":"Feb 2017","created_at":"2017-02-08 04:56:40","updated_at":"2017-02-08 04:56:40"}]]如果您看到响应,就会发现有三个id为2、4和1的组。这些id是user表中用户的id。我想要获取属于I的用户名。
发布于 2017-02-08 15:36:31
尝试在数组中返回$inters:
foreach ($int_payment as $inter) {
$inters[] = User::where('id',$inter->interviewer_id)->get();
}
return $inters;然而,在用户和IntPayment模型之间建立关系将更容易处理这种情况。请参阅文档Eloquent relationship.中的
发布于 2017-02-08 15:18:16
试试这个:
IntPayments::select('interviewr_TABLE.*', 'users.name')->where('month',$month_year)->leftJoin('users', 'users.id', '=', 'interviewr_TABLE') ->groupBy('interviewer_id')->get()这里唯一的问题是我不知道您的IntPayments表名到底是什么。
发布于 2017-02-08 18:27:29
只需使用Laravel模型关系就可以让生活更轻松:
让你的User模型拥有:
public function intpayments(){
$this->hasMany(IntPayments::class, 'interviewer_id');
}那么你的IntPayments模型有:
public function user(){
$this->belongsTo(User::class, 'interviewer_id');
}因此,您可以使用以下命令轻松检索您想要的结果:
$inters = IntPayments::where('month',$month_year)->load('user');然后,您可以遍历此结果以获得您需要的字段,例如:
$result = [];
foreach($inters as $inter)
{
$result[] = $inter->user->name;
}
return $result;更新:
,但我只想要该表中的name列,而来自IntPayments的数据是我的第一要务
好的,所以您仍然可以使用从查询返回的相同结果:
$result = [];
foreach($inters as $k => $inter)
{
$result[$k]['name'] = $inter->user->name; //this is the user's name
$result[$k]['id'] = $inter->id; //this is intPayments's id
$result[$k]['interviewer_id'] = $inter->interviewer_id; //this is intPayments interviewer's 'id
......
}您可能不知道,$inters变量的结果将首先显示IntPayments中的每条记录,然后显示每条记录的User。
这意味着inters自然会像这样(如果我将响应作为json发送):
[
{
"id": 1,
"candidate_id": "1",
"interviewer_id": "3"
"user": {
"id": 1,
"name": "second last",
"email": "second@somemail.com",
}
},
{
"id": 2,
"candidate_id": "1",
"interviewer_id": "5",
"user": {
"id": 1,
"name": "first last",
"email": "first@somemail.com",
}
},
.....
]这意味着您可以随心所欲地使用此响应,并访问所需的字段。
希望这能有所帮助:)
https://stackoverflow.com/questions/42106826
复制相似问题