【问题标题】:laravel Many Records to One single record....but how?laravel 多条记录到一条记录....但是如何?
【发布时间】: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()。你的方法让你自己变得更难了。

标签: laravel relationship laravel-6


【解决方案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 不一样......你有没有想法??
猜你喜欢
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2021-04-14
  • 2015-05-10
  • 1970-01-01
  • 2017-02-24
相关资源
最近更新 更多