Если вы можете гарантировать, что у вас всегда будет одинаковое количество продуктов и вариантов, которые вы можете использовать array_combine
$myproduct = [1,2,3];
$mychance = ['test1', 'test2', 'test3'];
$items = array_combine($myproduct, $mychance);
// result: [1 => "test1", 2 => "test2", 3 => "test3"]
// encode it to a string with json_encode
// result: "{"1":"test1","2":"test2","3":"test3"}"
$case = Cases::create(['items' => json_encode($items)]);
Кроме того, вы можете привести столбец предметов к array
В вашей модели Cases добавьте
protected $casts = [
'items' => 'array',
];
Затем Laravel автоматически сериализует его при хранении и десериализует при получении доступа к массиву.
, тогда вы можете просто сделать
$myproduct = [1,2,3];
$mychance = ['test1', 'test2', 'test3'];
$case = Cases::create(['items' => array_combine($myproduct, $mychance)]);
Array & JSON Casting
Тип приведения массива особенно полезен при работе со столбцами, которые хранятся в виде сериализованного JSON.Например, если ваша база данных имеет тип поля JSON или TEXT, который содержит сериализованный JSON, добавление массива, приведенного к этому атрибуту, автоматически десериализует атрибут в массив PHP при доступе к нему в вашей модели Eloquent