Ответ 1
Вы можете сохранить/вставить сериализованные данные в поле типа TEXT
, но для этого вам нужно что-то использовать с помощью php
, например:
$arr = array('x', 'y', 'z');
Чтобы вставить это в поле базы данных, вы можете использовать serialize функцию, подобную этой
$serializedArr = serialize($arr);
Теперь вы можете вставить массив $serializedArr
в базу данных и когда вы извлекаете данные для использования, просто unserialize, используя somethig вроде:
$record = SomeModel::find(1);
unserialize($record->field_name);
Кроме того, вы можете использовать Laravel accessors-and-mutators, чтобы автоматизировать все это, проверить руководство, оно мертво просто. Если вам нужна дополнительная помощь в этом accessors-and mutators
, оставьте сообщение с данными table
.
Update:
Так как Laravel 5.x
позволяет отличать атрибуты, чтобы можно было придать атрибуты другому типу данных для преобразования во время выполнения. В этом случае просто объявите свойство protected $casts
, например:
protected $casts = [
'is_admin' => 'boolean', // Will convarted to (Bool)
'options' => 'array', // Will convarted to (Array)
];
Листинг array
особенно полезен для работы с столбцами, которые хранятся как сериализованные JSON
. Например, если ваша база данных имеет поле типа TEXT
, которое содержит сериализованный JSON, добавление массива, переданного этому атрибуту, автоматически десериализует атрибут в массив php
при его доступе к вашей модели Eloquent
, а также его " Если вы установите значение для этого свойства, это будет автоматически сериализовано до JSON
, например:
$user = User::find(1);
// $options is an array...
$options = $user->options;
// options is automatically serialized back to JSON...
$user->options = ['foo' => 'bar'];