【问题标题】:Laravel : Cant Create Multiple Data Relation with ForeachLaravel:无法使用 Foreach 创建多个数据关系
【发布时间】:2021-07-26 04:10:35
【问题描述】:

我在使用 Maatwebsite/excel‍‍‍ 导入创建数据时遇到问题。在我的导入类中,我想使用关系创建数据,当我尝试包含子数据的 dd 变量时,它的工作正常,但是当我 ‍saveMany() 时,数据返回 null 和错误。

违反完整性约束:1048 列“描述”不能为空

这是我的代码:

public function collection(Collection $rows) {
    $parent = Parent::create([
        'name' => $this->name,
        'slug' => $this->slug,
        'month' => $this->month,
    ]);

    foreach ($rows as $row) {
        $item = new Child([
            'description' => $row['description'],
            'status' => $row['status'],
        ]);
        $items[] = $item;
    }
    $parent->childs()->saveMany($items);
}

【问题讨论】:

  • 如果将 dd($rows) 输出添加到问题中会更好。根据错误描述在任何一行中为空
  • 那太好了!如果您可以共享表结构或子关系方法信息。您的子记录中可能缺少关系键。
  • if ($row['description'] == null) {dd(true)} 添加到foreach ($rows as $row) {。循环结束还是你得到 dd()?
  • 感谢您对我的问题提出建议。我已经通过使用实现 toModel 解决了我的问题。

标签: php laravel eloquent laravel-excel


【解决方案1】:

可能你在 foreach 中的 $row['description'] 有空值。

像这样编辑你的循环代码

 foreach ($rows as $row) {
        if(!empty($row['description]))
        {
          $item = new Child([
            'description' => $row['description'],
            'status' => $row['status'],
          ]);
         $items[] = $item;
        }
    }

同时编辑最后一行

if(!empty($items))
  $parent->childs()->saveMany($items);

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多