Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保存模型时出现SQL错误_Php_Mysql_Doctrine Orm - Fatal编程技术网

Php 保存模型时出现SQL错误

Php 保存模型时出现SQL错误,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我第一次使用条令,它看起来很酷。但我无法将模型保存到数据库中 目前我正在使用PHP7.4和Doctrine 2.7.0 我有一个简单的模型: use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="place") */ class Place { /** * @ORM\Id * @ORM\Column(type="integer", unique=true) * @O

我第一次使用条令,它看起来很酷。但我无法将模型保存到数据库中

目前我正在使用PHP7.4和Doctrine 2.7.0

我有一个简单的模型:

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="place")
 */
class Place {
    /**
     * @ORM\Id
     * @ORM\Column(type="integer", unique=true)
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected int $id;

    /** @ORM\Column(type="string", unique=true) */
    private string $name;

    /** @ORM\Column(type="integer") */
    private int $ignore = 0;

    /**
     * @return int
     */
    public function getId(): int {
        return $this->id;
    }


    /**
     * @return string
     */
    public function getName(): string {
        return $this->name;
    }

    /**
     * @param string $name
     */
    public function setName(string $name): void {
        $this->name = $name;
    }

    /**
     * @return int
     */
    public function getIgnore(): int {
        return $this->ignore;
    }

    /**
     * @param int $ignore
     */
    public function setIgnore(int $ignore): void {
        $this->ignore = $ignore;
    }
}
桌子的结构如下所示:

通过教程()我了解到我可以创建这样的新对象:

$p = new Place();
$p->setName("hello");
$entityManager = Doctrine::setup(); // sets up the entity manager
$entityManager->getConnection()
    ->getConfiguration()
    ->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
$entityManager->persist($p);
$entityManager->flush();
并将其保存到数据库中,如下所示:

$p = new Place();
$p->setName("hello");
$entityManager = Doctrine::setup(); // sets up the entity manager
$entityManager->getConnection()
    ->getConfiguration()
    ->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
$entityManager->persist($p);
$entityManager->flush();
但我得到以下SQL错误(包括调试信息):


我想,也许我做错了什么。我也在其他型号上尝试过,但我总是会遇到这种错误。

这可以通过使用反勾号来解决,请看这里:

这可以通过使用反勾号来解决,请查看以下内容:

这与objectI添加的屏幕快照相同。在DB中运行此查询时会发生什么<代码>插入到位(名称,忽略)值(“你好”,0)好主意,我发现了问题。我不能在没有“`”的情况下使用“忽略”。有没有办法引用条令中的列名?没有,因为
ignore
是MYSQL关键字,即保留字。在这里了解更多:这与objectI添加的屏幕快照相同在DB中运行此查询时会发生什么<代码>插入到位(名称,忽略)值(“你好”,0)好主意,我发现了问题。我不能在没有“`”的情况下使用“忽略”。有没有办法引用条令中的列名?没有,因为
ignore
是MYSQL关键字,即保留字。在这里了解更多:因为我注意到,我不能使用ignore作为专栏,所以我已经找到了解决方案。但我也找到了一个引用策略的解决方案。但我不能让它工作。你知道如何实现QuoteStrategy吗,所以我不需要使用反勾号?因为我注意到,我不能使用ignore作为列,所以我已经找到了解决方案。但我也找到了一个引用策略的解决方案。但我不能让它工作。你知道如何实现QuoteStrategy吗,这样我就不需要使用反勾号了?