首页 > 解决方案 > 处理表单中的许多关系

问题描述

我不确定我是否走在正确的轨道上,我有一个表格可以用来创建和编辑一个有很多关系的模型,但是我在更新关系的方法上遇到了麻烦。

我的表单在创建新模型时有一个 cotizacion_id=0 ,因此当调用 updateorcreate 时它不会找到它,它会创建一个新模型。现有的实际上将具有 id。

这是我应该做的但有一些语法还是我错过了其他东西?

我得到的错误是它混淆了列名。在DD()测试中我得到了这个数组。

    array:2 [▼
      0 => array:1 [▼
        "id" => "58"
      ]
      1 => array:2 [▼
        "cotizacion" => "15000.00"
        "proveedor_id" => "3"
      ]
    ]

我得到的错误是在 SQL 上,因为它把所有东西都混在一起了。

`SQLSTATE[42S22]: Column not found: 1054 Unknown column '58' in 'where clause' (SQL: select * from `cotizaciones` where `cotizaciones`.`credito_id` = 105 and `cotizaciones`.`credito_id` is not null and (`58` is null and `15000`.`00` = 3) limit 1)`

正如你所看到的,我得到的好像库名是 58 而不是 id。其余的也是..

代码

        $postData = $this->validatedData($credito->id);
        
        $cotizacion_id = $postData['cotizacion_id'];
        unset($postData['cotizacion_id']);

        $cotizaciones = $postData['cotizacion'];
        unset($postData['cotizacion']);

        $proveedor_id = $postData['proveedor_id'];
        unset($postData['proveedor_id']);

    $credito = Credito::update($postData);

        $data = [];

        foreach ($cotizaciones as $key => $cotizacion) {
            $data[] = array([
                'id' => $cotizacion_id[$key] ?: 0],
                ['cotizacion' => $cotizacion,
                'proveedor_id' => $proveedor_id[$key]
            ]);
        }

        
        foreach ($data as $cotizacion) {
            //dd($cotizacion);                     //<----------------HERE
            $credito->cotizaciones()->updateOrCreate($cotizacion);
        }

标签: laraveleloquentrelationship

解决方案


推荐阅读