我呼叫一个json api,该json api向我发送了数据,我想使用Symfony中的学说将此JSON插入我的MariadB数据库中。
json i检索是一系列对象,我在互联网上遵循了几个示例(示例:学说数组vs simple_array vs json_array(,但没有任何作用,我不知道我的问题是什么。
这是我的代码:
$client = new Client();
$request = $client->request('GET', 'mylink.com');
$response = $request->getBody();
$livescore = json_decode($response, true);
$array = [];
foreach($livescore as $value) {
if($value['match_hometeam_name'] === 'Lyon' || $value['match_awayteam_name'] === 'Lyon') {
$array = $value;
break;
}
}
$livescoreObj = new Livescore();
$livescoreObj->setDateRafraichissement(new DateTime());
$livescoreObj->setMatch($array);
$this->entityManager->persist($livescoreObj);
$this->entityManager->flush($livescoreObj);
return new JsonResponse($array);
我的实体:
<?php
namespace SGBundleEntity;
use DoctrineORMMapping as ORM;
/**
* Livescore
*
* @ORMEntity()
*/
class Livescore
{
/**
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
* @ORMColumn(type="integer", options={"unsigned":true}, nullable=false)
*
* @var int
*/
private $id;
/**
* @ORMColumn(type="json_array", nullable=true)
*
* @var string
*/
private $match;
/**
* @var DateTime
*
* @ORMColumn(type="datetime")
*/
private $dateRafraichissement;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getMatch()
{
return $this->match;
}
/**
* @param mixed $match
*/
public function setMatch($match)
{
$this->match = $match;
}
/**
* @return DateTime
*/
public function getDateRafraichissement()
{
return $this->dateRafraichissement;
}
/**
* @param DateTime $dateRafraichissement
*/
public function setDateRafraichissement($dateRafraichissement)
{
$this->dateRafraichissement = $dateRafraichissement;
}
}
我的错误:
sqlstate [42000]:语法错误或访问违规:1064错误 语法附近'匹配,date_rafraichissement(值 ('{{" match_id ":" 257194 "," country_id ":'在第1行
预先感谢您的帮助
您的问题是$match
属性:MATCH
是MySQL中的一个保留单词,在查询中使用时需要引用。
学说不会自动化字段。但是,您可以告诉它在构建查询时引用字段名称。尝试以下内容:
/**
* @ORMColumn(name="`match`", type="json_array", nullable=true)
*
* @var string
*/
private $match;