首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Laravel模型保存多级数组

利用Laravel模型保存多级数组
EN

Stack Overflow用户
提问于 2020-07-03 07:54:48
回答 1查看 96关注 0票数 1

使用Laravel-7模型保存这些数据有问题。

这是我的资料

代码语言:javascript
复制
    $supplier = [
      'name'  => 'Supplier 1',
      'pic'   => [
        [
          'name' => 'PIC 1',
          'phone_number'  => [
            ['number' => '111111'],
            ['number' => '123456']
          ]
        ],
        [
          'name' => 'PIC 2',
          'phone_number'  => [
            ['number' => '222222']
          ]
        ]
      ]
    ];

这是我的模特Supplier.php

代码语言:javascript
复制
    // Supplier.php
    public function supplier_pic()
    {
        return $this->hasMany('SupplierPIC');
    }

以及其他模型

代码语言:javascript
复制
    // SupplierPIC.php
    public function supplier()
    {
        return $this->belongsTo('Supplier');
    }

    public function pic_phone_number()
    {
        return $this->hasMany('SupplierPICPhoneNumber');
    }
代码语言:javascript
复制
    // SupplierPICPhoneNumber.php
    public function supplier_pic()
    {
        return $this->belongsTo('SupplierPIC');
    }

如何将这些数据保存在控制器上?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 11:53:13

你只需要把它分解成它的组成对象。

在您的例子中,它是一个Supplier对象和两个SupplierPIC对象,每个对象都有一个SupplierPICPhoneNumber

  1. Create Supplier

代码语言:javascript
复制
$supplier = Supplier::firstOrCreate([
   'name' => 'Supplier 1'
]);

  1. Create供应商PIC(s)

代码语言:javascript
复制
collect($data['pics'])->each(function ($pic) use ($supplier) {
    // Create the PIC
    $x = SupplierPIC::create([
        'name' => $pic['name']
    ]);

    // Attach it to the supplier
    $supplier->supplier_pic()->save($x);

    // Attach phone numbers
    collect($pic['phone_number'])->each(function ($number) use ($x) {
        // Create the PIC Phone number
        $y = SupplierPICPhoneNumber::create([
            'number' => $pic['number']
        ]);
        // Attach the number to the PIC
        $x->pic_phone_number()->save($y);
    });
});

建议

  • ,您的关系的命名并不遵循最佳实践,这有点让人困惑。尝试用复数(即pic_phone_number)
  • Do而不是pic_phone_numbers )命名使用hasMany类型关系的事物,您需要一个完整的SupplierPICPhoneNumber模型吗?json列可能更适合。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62710928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档