gpt4 book ai didi

arrays - 在 Laravel 应用程序的数据库中存储数组或 std 对象

转载 作者:行者123 更新时间:2023-12-03 10:08:44 26 4
gpt4 key购买 nike

数据库表在列中存储 Array 或 stdObject 的架构是什么?

当我使用 ->string 并插入一个数组变量时,它只在 db 列中存储单词“Array”。

Laravel 是否支持数组?

如果不是,我应该采用什么方法?

最佳答案

您可以将序列化数据保存/插入到 TEXT输入字段,但为此你必须使用 php , 例如:

$arr = array('x', 'y', 'z');

要将其插入到数据库字段中,您可以使用 serialize像这样的功能
$serializedArr = serialize($arr);

现在,您可以插入 $serializedArr将数组放入数据库,当您检索要使用的数据时,只需 unserialize它使用类似的东西:
$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 cast 对于处理存储为序列化的列特别有用 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'];

关于arrays - 在 Laravel 应用程序的数据库中存储数组或 std 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com