2014-04-07 116 views
2

如果我有一個JSON變量,每個鍵與表列匹配,是否有一種方法可以傳遞並將其保存到數據庫中?Laravel Eloquent - 通過傳遞JSON變量插入到數據庫

舉例來說,如果我有:

{ 
    "name" : "John Smith", 
    "email" : "[email protected]", 
    "phone" : "111-111-1111" 
} 

而我的表User只有那些列(!我知道,我知道我沒有定義的密碼)。我是否可以用某個變量來保存一個新的條目,或者是否需要逐一設置每一列?

回答

4

我不認爲有一種方法可以直接做到這一點,但你可以轉換到JSON關聯數組:

$userData = json_decode("{ 
    "name" : "John Smith", 
    "email" : "[email protected]", 
    "phone" : "111-111-1111" 
}", true); 

那麼你可以使用User::create($userData);創建新條目。

要做到這一點,你還需要設置你的模型,以便爲這些字段質量分配:

protected $fillable = ['name', 'email', 'phone'];

你可以找到更多關於本作的官方Laravel文檔here中;

+0

您不是將JSON轉換爲關聯數組,您正在數據庫中手動插入值 – Alen

+0

我不確定你的意思。我只是使用了與原始問題中相同的JSON來更好地說明我的觀點。沒有必要手動設置所有值。 – kajetons