$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'
]);
在create method laravel 5.4上的数组中传递数组时抛出错误:
数组到字符串转换(SQL:插入权限(名称,slug,description,updated_at,created_at)值(post,1,manage post permissions,2017-04-27 05:32:41,2017-04-27 5时32分41秒))
答案 0 :(得分:3)
在slug
字段上尝试json_encode,然后将其传递给Eloquent以保留在DB中:
'slug' => json_encode([
'create' => true,
'view' => true,
'update' => true,
'delete' => true
)]
答案 1 :(得分:3)
Laravel允许Array & JSON Casting mutator:
只需更新您的权限模型即可:
protected $casts = [
'slug' => 'array',
];
来自文档:
定义了强制转换后,您可以访问options属性,它将自动从JSON反序列化为PHP数组。设置options属性的值时,给定的数组将自动序列化为JSON以进行存储
所以,现在你不需要手动编码,Laravel会自动为你做所有事情! 只需将数组作为数组传递。
答案 2 :(得分:0)
Slug是数据库中的一个字符串。您将数组传递给它。
您可以将其存储为JSON或Serialise,但这是数据库设计的气味。您应该考虑正确存储此数据所需的其他表,具体取决于它将如何在您的应用程序中的其他位置使用。