如何在Eloquent中定义和使用JSON数据类型?

Vol*_*il3 27 postgresql-9.1 eloquent laravel-5 laravel-5.1

如何定义Laravel 5中JSON提供的数据类型pgsql 9.4

我需要定义数据类型,存储和获取数据,到目前为止还无法找到在Laravel 5.1中处理它的方法

Hel*_*cas 56

在您的迁移中,您可以执行以下操作:

$table->json('field_name');
Run Code Online (Sandbox Code Playgroud)

在您的模型中,您将该字段添加到$casts属性以指示Eloquent将其从JSON反序列化为PHP数组:

class SomeModel extends Model
{
    protected $casts = [
        'field_name' => 'array'
    ];
}
Run Code Online (Sandbox Code Playgroud)

资料来源:https://laravel.com/docs/5.1/eloquent-mutators#attribute-casting

注意:这也是Laravel 5.6的相关答案


Rog*_*ger 8

根据Laravel文档,'json'不是强制转换类型之一。 https://laravel.com/docs/5.1/eloquent-mutators

您应该使用“数组”代替:

class SomeModel extends Model
    {
        protected $casts = [
            'field_name' => 'array'
        ];
    }
Run Code Online (Sandbox Code Playgroud)

  • 您是正确的,它应该是数组,但可悲的是'json'确实有效。不应这样做,因为它会鼓励滥用存在的Casts属性,以描述您要_to_对其进行强制转换的属性。说我想将JSON字段强制转换为_to_ JSON是胡说八道,但很多人正在使用它。无论如何,这是对JSON的普遍误解的征兆,这是我见过称为$ jsonSomething的PHP数组变量的次数。JSON是一个字符串!总是如此,它是_notation_的形式,而不是对象或数组。 (3认同)