在教义中插入 json 不起作用



我呼叫一个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;

相关内容

  • 没有找到相关文章

最新更新