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中插入多条记录而不循环

Laravel,如何在 HTML 表格中输出相同 ID 的多条记录?

oracle中如何只查询一条复合条件的记录,即查到一条记录就返回

Oracle如何从一条记录返回多条记录