2017-04-27 39 views
0
$permission = new Permission(); 
$permPost = $permission->create([ 
    'name'  => 'post', 
    'slug'  => [   // pass an array of permissions. 
     'create'  => true, 
     'view'  => true, 
     'update'  => true, 
     'delete'  => true 
    ], 
    'description' => 'manage post permissions' 
]); 

在经过阵列内阵列上创建方法laravel 5.4投掷错误错误:Laravel抛上创建方法

阵列到字符串转换(SQL:插入权限(名称,蛞蝓,描述,的updated_at, created_at)值(后,如图1所示,管理权限后,2017年4月27日5点32分41秒,2017年4月27日5点32分41秒))

+0

什么是错误? –

+0

什么是错误?检查你的日志文件并在这里​​发布。 /storage/logs/laravel.log – Paul

+0

数组到字符串的转换(SQL:插入'permissions'('name','slug','description','updated_at','created_at')values(post,1,manage post权限,2017-04-27 05:32:41,2017-04-27 05:32:41)) –

回答

3

Laravel允许Array & JSON Casting突变:

只需更新您的权限模型有:

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

从文档:

一旦投定义,你可能访问选项属性,它会自动从JSON反序列化成一个PHP数组。当您设置的选项属性的值,给定的阵列将自动被序列化回JSON用于存储

所以,现在你无需手动编码,Laravel做每件事自动为您! 只需将数组作为数组传递即可。

+0

Perfect。谢谢。 –

3

slug字段尝试json_encode,然后将它传递对雄辩坚持DB:

'slug' => json_encode([ 
    'create' => true, 
    'view' => true, 
    'update' => true, 
    'delete' => true 
)] 
+0

是的,我知道它可以工作,但我的问题是为什么第一个数组传递正确。 –

+0

Laravel开箱即可将数组转换为Eloquent模型,但它不支持多维数组,因为您使用的是RDBMS数据库,而不是NoSql数据库,除非您在模型中使用了增变器 – Mehrud

0

Slug是数据库中的字符串。你传递一个数组给它。

您可以将其存储为JSON或将其序列化,但这是数据库设计的气味。您应该考虑您需要使用哪些其他表格来正确存储这些数据,具体取决于您在应用程序中将如何使用它。