【发布时间】:2021-08-27 04:54:22
【问题描述】:
我的 Laravel 应用程序中的 2 个模型之间存在多对多关系。在这个数据透视表上,我存储了附加信息,包括需要转换为 json 的数组。
枢轴数据如下所示:
$pivotData = [
'name' => 'Normal string',
'items' => [
'0' => 'String A',
'1' => 'String B',
'2' => 'String C',
]
]
在 ModelA 和 ModelB 之间的数据透视表上,我设置了 2 列(“名称”和“项目”)。 items 列设置为 json 列并按此进行强制转换。
创建 $modelA 和 $modelB 后,我想将此数组与数据透视表中的 ModelB 同步,如下所示:
$modelA->relationshipMethod()->sync([
$modelB->getKey() => $pivotData
])
当它运行时,我在/opt/project/vendor/laravel/framework/src/Illuminate/Support/Str.php 中收到一个错误Array to string conversion,这是因为“items”是一个数组。
如果您的数据透视表包含 json 列,我做错了什么?应该如何处理?
【问题讨论】:
-
但是它不会知道这个数据所属的$modelB的id。
-
$pivotData 是 $modelB 的模型表示还是已经创建?即使您的问题得到了很好的解释,它也会变得令人困惑,例如。为示例数据绘制数据库表以及 $pivotData 如何映射到它。
标签: php arrays laravel eloquent pivot