【问题标题】:通过 eloquent 获取唯一的关系记录
【发布时间】:2022-01-22 04:23:05
【问题描述】:

我有两个表用户和帐户:

 id     name    
------------- 
 1       joe
 2       jane
 3       phil

和帐户表:

id   user_id      account       account_number   is_active
----------------------------------------------------------
1      1           visa              11             1
2      1           visa              22             0
3      1           master            12             0
4      2           visa              33             0
6      3            visa             44             1
7      3            master           55             1

我想让所有用户都拥有他们的帐户。如果帐户是活动的,我们应该有一个活动的,如果不是非活动的记录之一。最终的集合是这样的:

users = [
'joe'=>[
  'visa'=>1,
  'master'=>0
],

'jane'=>[
  'visa'=>0
 ],
'phil'=>[
  'visa'=>1,
  'master'=>1
]

谢谢

【问题讨论】:

  • 嗨!你试过任何代码吗?你能发布你的模型、控制器吗?
  • 到目前为止您尝试了哪些方法,您在哪里卡住了?您是否尝试检查文档?你需要create 2 modelsrelationships between them
  • ... 然后像User:with('accounts')->get() 这样的东西会产生那种结果。文档使用带有 cmets 的帖子作为示例 - 这与您的用户和帐户非常相似,因此很容易将其示例用作指南。

标签: laravel eloquent


【解决方案1】:

试试这个:

$users = User::with('accounts')->get();

为此,您需要在您的用户模型中定义您的关系用户->帐户。

这种关系是一对多的,如下所示:

public function accounts()
{
 $this->hasMany(Account::class)
}

如果您需要查阅有关关系的更多信息,请查看 Laravel 文档: https://laravel.com/docs/8.x/eloquent-relationships#one-to-many

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2017-05-15
    相关资源
    最近更新 更多