Тип приведения массива особенно полезен при работе со столбцами, которые хранятся как сериализованные JSON. У вас есть тип поля JSON или TEXT, который содержит сериализованный JSON, добавление массива, приведенного к этому атрибуту, автоматически десериализует атрибут в массив PHP при обращении к нему в вашей модели Eloquent:
class GeoTournee extends Model
{
...
protected $casts = [
'position' => 'array',
];
...
}
Таким образом, вы можете сохранить это поле json следующим образом:
$geoTournee->position = $position;
$geoTournee->save();
Получив доступ к атрибуту position
, и он будет автоматически десериализован из JSON
в PHP array
. Когда вы устанавливаете значение атрибута position
, данный array
будет автоматически сериализован обратно в JSON
для хранения:
И вам не нужно создавать функцию savePositionCamion
, вы можете используйте firstOrCreate
вместо:
GeoTournee::firstOrCreate(['id_tournee' => $id_tournee], [ 'position' => $position ]);