2014-04-07 74 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