laravel - 处理表单中的许多关系
问题描述
我不确定我是否走在正确的轨道上,我有一个表格可以用来创建和编辑一个有很多关系的模型,但是我在更新关系的方法上遇到了麻烦。
我的表单在创建新模型时有一个 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);
}
解决方案
推荐阅读
- php - PHP 文件移动功能无法正常工作
- python - 从 Python 编写 Excel 2003 XML
- firebase - Firebase 中的“可信服务器环境”是什么?
- java - 我想使用方法打印输出,但我无法打印它。为什么?
- asp.net-mvc - 从 Web 服务器浏览时,Windows 身份验证不起作用
- android - 使用预填充的数据库发布 android 应用程序
- c# - 获取列表的所有对角线元素
- java - jre更新后大小不同
- microsoft-edge - 如何从命令行打开 Edge 到特定页面?
- javascript - Node.js 配置文件 vs .env 架构实践和构建模式