数据库表将数组或stdObject存储在列中的模式是什么?将数组或std对象存储在laravel应用程序数据库中
当我使用 - > string并插入数组变量时,它只在db列中存储单词“Array”。
Laravel是否支持数组?
如果不是,我应该采用哪种方法?
数据库表将数组或stdObject存储在列中的模式是什么?将数组或std对象存储在laravel应用程序数据库中
当我使用 - > string并插入数组变量时,它只在db列中存储单词“Array”。
Laravel是否支持数组?
如果不是,我应该采用哪种方法?
您可以保存/插入序列化数据到一个TEXT
类型字段,但对于这一点,你必须使用php
的东西,例如:
$arr = array('x', 'y', 'z');
要插入到这个数据库字段,你可以使用serialize之类的函数这
$serializedArr = serialize($arr);
现在,您可以到DATABSE插入$serializedArr
阵列,当您检索数据使用,只需unserialize它使用somethig,如:
$record = SomeModel::find(1);
unserialize($record->field_name);
此外,您还可以使用,Laravel的accessors-and-mutators,使自动化整个事情,检查手册,它是死的简单。如果您在此accessors-and mutators
需要更多帮助,请留下您的table
详细信息。
更新:
由于Laravel 5.x
允许attribute casting因此有可能投属性另一种数据类型转换上运行。在这种情况下,只是声明一个protected $casts
属性例如:
protected $casts = [
'is_admin' => 'boolean', // Will convarted to (Bool)
'options' => 'array', // Will convarted to (Array)
];
的array
铸造是用于与被存储为串行化JSON
列工作特别有用。例如,如果数据库包含一个包含序列化JSON的TEXT
类型字段,则在您的Eloquent
模型上访问数组时,将该数组强制添加到该属性将自动将该属性反序列化为一个PHP
数组,并且该数组将自动序列化回到JSON
当你设置值这个属性,例如:
$user = User::find(1);
// $options is an array...
$options = $user->options;
// options is automatically serialized back to JSON...
$user->options = ['foo' => 'bar'];
,最好的办法是投你的表字段是这样的:
class Mytable extends Model
{
/**
* The attributes that should be casted to native types.
*
* @var array
*/
protected $casts = [
'my_field' => 'array',
];
了解更多关于属性铸造上Laravel的official documents page。 报价:
的$使人对你的模型属性提供 转换属性,以常见的数据类型的简便方法。 $ casts属性应该是 是一个数组,其中键是被投射属性的名称, ,而值是您希望投射到该列的类型。 支持的投射类型为:整数,实数,浮点数,双精度,字符串, 布尔值,对象,数组,采集日期和日期时间。
唯一限制该文档不说的是,你可以用这个数组不工作直接,这样
$myTable.my_field[]='new array element';
相反,你必须单独准备数组,然后将其分配给该领域,像这样:
$temp=[];
$temp[]='new array element';
$myTable.my_field[]=$temp;
thx,确实死了简单使用访问器和mutators,在我的情况下非常适用 –
为什么不使用CASTing?详情请阅读我的回答。 –
当你想编辑存储的数据时,你做了什么? – Shweta