Laravel Eloquent - 通过传递JSON变量插入数据库

Kou*_*sha 3 php json eloquent laravel-4

如果我有一个JSON变量,每个键与表列匹配,有没有办法只传递它并将其保存到数据库中?

例如,如果我有:

{
    "name" : "John Smith",
    "email" : "john.smith@gmail.com",
    "phone" : "111-111-1111"
}
Run Code Online (Sandbox Code Playgroud)

我的表User只有那些列(我知道,我知道!我没有定义密码).我可以以某种方式使用该变量来保存新条目,还是需要逐个设置每个列?

kaj*_*ons 5

我认为没有办法直接执行它,但您可以将JSON转换为关联数组:

 $userData = json_decode("{
    "name" : "John Smith",
    "email" : "john.smith@gmail.com",
    "phone" : "111-111-1111"
}", true);
Run Code Online (Sandbox Code Playgroud)

然后您可以User::create($userData);用来创建新条目.

为此,您还需要设置模型以允许为这些字段进行质量分配:

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

您可以在此处的官方Laravel文档中找到更多相关信息;