laravel 多条记录到一条记录....但是如何?
Posted
技术标签:
【中文标题】laravel 多条记录到一条记录....但是如何?【英文标题】:laravel Many Records to One single record....but how? 【发布时间】:2020-05-10 22:56:08 【问题描述】:我有两张桌子,一张是Users
,另一张是Loans
。它们之间有一对多的关系。一个用户可以有很多贷款,一个贷款属于一个用户。
现在我想从贷款列表中获取用户。
Loan::where('user_id', $user)->get()
这给了我与多笔贷款相关的重复样本用户数组。但我只想获得一条记录,就像与一个用户关联的许多贷款一样。
【问题讨论】:
只返回一条记录...Loan::where('user_id', $userId)->first();
...由于您使用的是get()
,因此您将返回多条记录,因为这是一个用户对多贷款的关系,当您查询 loans
表时,将会有多个记录。或者,你为什么不直接查询users
表呢? User::where('id', $userId)->first()
。你的方法让你自己变得更难了。
【参考方案1】:
根据我对您问题的理解,您想让用户连同它的贷款一起使用吗?您的查询应该是这样的。
$user_loans = User::with('loans')->where('id', $user_id)->get();
从贷款表中获取用户信息
Loan::where('user_id', $user_id)->with('user')->get()
从贷款表中获取用户取决于分支id
Loan::where('branch_id', $branch_id)->with('user')->get();
【讨论】:
实际上我在贷款表中有两个外键 user_id 和 branch_id 两个用户都存储在用户表中,我已经为他们分配了角色.....现在在查询中设置 branch_id 和根据 branch_id 获取(user_id)用户表中的所有信息.......您的查询只给 ma 一条记录,但他们有可能 branch_id 可能相同但 user_id 不一样......你有没有想法?? 您想获得具有特定分行 ID 的用户贷款吗? 不,我想从包含branch_id和user_id的贷款列表中获取用户信息......我将比较branch_id然后从结果中获取用户信息...... ... 我可以通过在刀片文件中执行此操作来获取用户信息.....就像$result->user->name
但它给了我重复的记录。
你想从特定的用户 ID 和分支 ID 获得贷款?【参考方案2】:
我假设您已经在用户和贷款模型之间建立了关系
// App\User
public function loans()
return $this->hasMany('App\Loan');
// App\Loan
public function user()
return $this->belongsTo('App\User');
从贷款列表中获取用户
$user = Loan::where('user_id', $id)->first()->user;
// eager loading version
$loansWithUsers = Loan::with('user')->where('user_id', $id)->get();
与一位用户关联的贷款
$loans = User::findOrFail($id)->loans;
// eager loading version
$userWithLoans = User::with('loans')->findOrFail($id);
【讨论】:
实际上我在贷款表中有两个外键user_id & branch_id
两个用户都存储在用户表中,我已经为他们分配了角色.....现在在查询和根据 branch_id 获取(user_id)用户表中的所有信息.......您的查询只给 ma 一条记录,但他们有可能 branch_id 可能相同但 user_id 不一样......你有没有想法??以上是关于laravel 多条记录到一条记录....但是如何?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel,如何在 HTML 表格中输出相同 ID 的多条记录?