将学说查询生成配置为小写

Posted

技术标签:

【中文标题】将学说查询生成配置为小写【英文标题】:Configure doctrine queries generation to lowercase 【发布时间】:2017-01-12 12:21:28 【问题描述】:

在 Unix 上部署我的 symfony 项目时出现 sql 错误。事实上,查询使用大写的表名,这在以前不是这样。在数据库中,表名是小写的。

有人知道您在哪里配置查询生成方式(大写或小写)

谢谢。

也许在 Doctrine 配置中有些东西??

注意:我有一些新信息。

我要求在我知道它正在工作的时候从保存中重建我的数据库。 我有一些错误,因为对于新代码,数据库必须与此时的数据库略有不同,但我可以看到在查询中表的名称是小写的。 我在命令行中传递了我的新 sql(和以前一样,加上一些小改动)。

\. path/to/my/sql

我启动了网站,查询是用大写的表名进行的。

有什么想法吗?

实体示例:

<?php

namespace MyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * MyTable
 *
 * @ORM\Table(name="mytable")
 * @ORM\Entity(repositoryClass="MyBundle\Repository\MyClassRepository")
 */
class MyTable

  /**
   * @var string
   *
   * @ORM\Column(name="FIELD1, type="string", length=120, nullable=false)
   */
  private $field1;

  /**
   * @var string
   *
   * @ORM\Column(name="FIELD2", type="string", length=50, nullable=true)
   */
  private $field2

  /**
   * Set field1
   *
   * @param string $field1
   *
   * @return Tretb
   */
  public function setField1($field1)
  
    $this->field1 = $field1;

    return $this;
  

  /**
   * Get field1
   *
   * @return string
   */
  public function getField1()
  
    return $this->field1;
  

  /**
   * Set field2
   *
   * @param string $field2
   *
   * @return Tretb
   */
  public function setField2($field2)
  
    $this->field2 = $field2;

    return $this;
  

  /**
   * Get field2
   *
   * @return string
   */
  public function getField2()
  
    return $this->field2;
  

【问题讨论】:

请至少提供一个示例实体和一个示例控制器,这可能有助于找到问题。 【参考方案1】:

不知道能不能配置得更笼统,但是可以用学说为每个实体定义表表

/**
 * AppBundle\Entity\MyEntity
 *
 * @ORM\Table()
 * @ORM\Entity
 * @ORM\Table(name="mytable")
 */
class MyEntity

【讨论】:

【参考方案2】:

您的 mysql 实例是否支持小写表名? 要检查设置,请使用:

mysql> show variables like "lower_case%";

要更改设置,您需要更改 mysql 设置

lower_case_table_names = 1 or lower_case_table_names = 2

Source from ***

【讨论】:

将 1 或 2 放入 lower_case_table_names 的指令是什么? 我不明白的另一件事......为什么它没有像注释中那样编写列名和表名的sql查询? 如果您在 mysql 控制台中更改选项,则它不起作用。您需要在 mysql.ini 或 my.conf 文件中更改它。 您能否为我们提供您代码中的示例实体? 服务器配置依赖于其他人......另外,以前它曾经可以工作,尽管他们没有更改配置中的任何内容

以上是关于将学说查询生成配置为小写的主要内容,如果未能解决你的问题,请参考以下文章

学说减慢了表现

Symfony 2 实体连接或学说查询连接

学说查询生成器中的嵌套选择查询

如何将这个简单的 sql 查询转换为学说 querybuilder

使用错误表别名生成查询的学说

将自定义函数添加到学说查询生成器按子句分组