【问题标题】:Retrieve Value from Field in Laravel Cast Array从 Laravel Cast 数组中的字段中检索值
【发布时间】:2020-03-11 16:56:04
【问题描述】:

我有一个名为settings的表,其中有几列,id,company_id,key,value

在我的 Laravel 设置模型中,我有以下演员:

protected $casts = [
    'value' => 'array',
];

但是当我去检索已经存储的数据时,我不能。

例如,我有一条记录如下value"{\"default_remit_address\":\"2395\"}"

当我在 Blade 中检索记录时,它确实正确地将其拉起,但我不确定如何从 value 字段中获取特定值(如 default_remit_address)。

如果我直接在 Blade 中打印返回 "{{$settings->value}}",这就是我得到的:

{"default_remit_address":"2395"}

那么我怎样才能更深一层呢?

【问题讨论】:

    标签: laravel casting


    【解决方案1】:

    由于这个 json 对象被转换为 Array,您可以使用常规数组语法来访问它的内容。

    $default_remit_address = Settings::find(1)->value['default_remit_address'];
    

    或在您的刀片模板中

    {{ $settings->value['default_remit_address'] }}
    

    【讨论】:

    • 如果我像上面那样做,我会收到以下错误:非法字符串偏移 'default_remit_address' ,你能建议我可能缺少什么吗?
    • 嗯,值列是迁移使用$table->json('value')创建的吗?由于您在字符串"{\"default_remit_address\":\"2395\"}" 中的编码,我很怀疑。我的本地数据库中的类似值不包含反斜杠(也许你在存储时的某个时候是双重编码?)
    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多