首页 > 解决方案 > 具有关系和插入的 laravel 表

问题描述

我有 4 张桌子

我有一个必须在正确的表中插入数据的表单。

public function storeRefunds(RefundsPost $request){

    DB::beginTransaction();
        $customers = Customers::create($request->all());

        $refunds = $customers->refunds()->create([
            'date_ref' => request('date_ref'),
            'status_ref' => request('stato'),
        ]);

        $tipo = $request->input('tipo', []);
        $importo = $request->input('importo', []);

        $refunds = Refunds::create($request->all());
        for ($i=0; $i < count($tipo); $i++) {
            if ($tipo[$i] != '') {

                $refunds->services()->attach($tipo[$i], [
                'services_id' => $tipo[$i],
                'services_amount' => $importo[$i]
                ]);
            }
        }

        return redirect("/");

}

使用此代码,我可以将所有数据插入正确的表中,但在 Refunds 表中找不到 ID 连接。Refunds 表中创建了两个不同的 ID。在 Refunds 表中创建的第二个 ID 未连接到任何客户 (0),但连接到选择的服务列表。我能怎么做?谢谢

标签: laraveleloquentrelationship

解决方案


你需要调试你的代码。首先Refund在这一行创建$refunds = $customers->refunds()->create,它属于Customer,第二个Refund在这里创建:$refunds = Refunds::create($request->all());它与任何无关Customer,但与Service(你在for循环中执行此操作)相关。顺便说一句,您的tipo输入不是多个([]如果您期望它可以是多个值,则应该是),并且for循环在这种情况下毫无意义。

删除其中一种Refunds::create方法,将您的数据带到预期的视图和使用createMany()方法。

Laravel 文档中的更多信息:https ://laravel.com/docs/7.x/eloquent-relationships#the-create-method


推荐阅读