首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从JSON中提取数据并将其插入到Laravel的MySQL中的相应列中?

如何从JSON中提取数据并将其插入到Laravel的MySQL中的相应列中?
EN

Stack Overflow用户
提问于 2020-03-07 18:06:43
回答 2查看 550关注 0票数 1

我是Laravel的新手,正在开发一个简单的API来将数据insert到MySQL table中。所以基本上我使用的表单将接受来自用户的姓名、电子邮件、电话和密码,并将其insert到MySQL中。

Laravel中有没有什么方法可以从JSON数据中检索键和值,并将相同的数据insert到MySQL中。以下是JSON数据和表结构:

代码语言:javascript
运行
复制
{
"name" : "xyz",
"email" : "xyz@gmail.com",
"password" : "12345",
"phone_number" : "1234567890",
}

正如我们所看到的,JSON键和表column名称完全相同,那么我是否可以通过从JSON获取数据来一次在所有字段中插入数据?

我不想通过给数据提供一个单独的密钥来insert数据。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2020-03-07 19:17:16

首先,您需要将JSON解码为一个数组,如下所示。值'true‘将确保返回的数据是一个数组而不是一个对象。(请参阅:https://www.php.net/json_decode)

代码语言:javascript
运行
复制
$data = json_decode($data, true);

然后,您可以创建一个新行。假设您正在尝试创建一个新用户,您可以使用Mass Assignment

代码语言:javascript
运行
复制
$user = User::create($data);

如果你使用的是Mass Assignment,,请确保你已经更新了模型的'fillable‘属性。

代码语言:javascript
运行
复制
protected $fillable = ['name', 'email', 'password', 'phone_number'];
票数 2
EN

Stack Overflow用户

发布于 2020-03-07 18:47:19

json_decode是一个PHP框架,因此Laravel PHP函数可以帮助我们:

代码语言:javascript
运行
复制
$json = json_decode($yourjson, true);

$columns = [];
$values = [];
$parameters = [];

foreach ($json as $key => $value) {
    $columns[]=$key;
    $values[$key]=$value;
    $parameters[]=":".$key;
}

$sql = "insert into yourtable(".implode(",", $columns).") values(".implode(",", $parameters).")";

$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute($values);

上面的例子是使用PDO。

您还可以使用Laravel的查询构建器:https://laravel.com/docs/5.7/queries

编辑

由于有一些关于$dbh的不清楚之处,我将分享文档中的一个PDO实例化示例。

代码语言:javascript
运行
复制
<?php
/* Connect to a MySQL database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60576423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档