2017-04-27 88 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或將其序列化,但這是數據庫設計的氣味。您應該考慮您需要使用哪些其他表格來正確存儲這些數據,具體取決於您在應用程序中將如何使用它。