Laravel 我如何存储 API parent 数据和一些数组 child 数据?

Laravel how can i store an API parent data with some array child data?

所以我想在laravel 9 rest api中同时存储Parent数据和数组child数据,但我什至不知道如何格式化数组存储,我尝试了一些循环代码,但仍然不能。这种关系是一个 parent 有许多 child。我想这样存储 this what i expect store value parent 模型只有名称和 class,而 child 模型是外国的 parent_id 和名称。 the model

这是我的控制器

public function store(Request $request){
      $this->validate($request, [
        'parent_name' => 'required',
        'class' => 'required',
        'child.*' => 'array',
          ]);
          $child = $request->child;
          $chd = [];
            foreach($child as $cd){
              array_push($chd, Child::create([
                  'child' => $cd,
              ]));
           }
          $this->updates->create($request->all());
          return $this->index();
  }

此处迁移:

Schema::create('parent', function (Blueprint $table) {
            $table->increments('id');
            $table->string('parent_name');
            $table->string('class');
            $table->timestamps();
        });
  Schema::create('child', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->integer('parent_id')->unsigned()->index();
            $table->foreign('parent_id')->references('id')->on('parent_id')->onDelete('cascade');
            $table->timestamps();
        });
    }

你可能想试试这个

    public function store(Request $request) {
        $rules = [
            'parent_name' => 'required|string|max:255',
            'class' => 'required|string|max:255',
            'child' => 'required|array',
            'child.name' => 'required|string|max:255',
        ];

        $validator = Validator::make($request->all(), $rules);
        if ($validator->fails()) {
            return response()->json(['error' => true, 'error_msg' => 'invalid input']);
        }
        DB::beginTransaction();
        $parent = Parent::create([
            'parent_name' => $request->parent_name,
            'class' => $request->class,
        ]);

        foreach ($request->child AS $child) {
            $child = Child::create([
                'parent_id' => $parent->id,
                'name' => $child['name'],
            ]);
        }
        DB::commit();

        return response()->json(['error' => false]);
    }