【问题标题】:Symfony2 : can I use find($variable) where $variable is a string?Symfony2:我可以在 $variable 是字符串的地方使用 find($variable) 吗?
【发布时间】:2023-04-04 11:40:01
【问题描述】:

由于我的代码中的一行引发了异常:

$acadObj = $em->getRepository('ProjectMyBundle:Academie')->find($acadDeleg);

其中$acadDeleg 是我从数据源检索的字符串。

一般来说,官方文档使用find($id),其中$id是一个数字(一个整数)。为此,我问是否可以使用字符串。问题是我有一个表,我必须从中获取一个值,然后与另一个表进行比较,这样我就可以创建一个对象。

为了记录,$acadDelegAcademie 实体的主键

编辑:

异常消息:

The Exception message :

An exception occurred while executing 'SELECT t1.codeLieu AS codeLieu2, t1.nomLieu AS nomLieu3, t1.latLieu AS latLieu4, t1.lngLieu AS lngLieu5 FROM Academie t1 WHERE t0.codeLieu = ?' with params {"1":"A"}:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.codeLieu' in 'where clause'

学院定义:

<?php

namespace PFA\SIGBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Academie
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="PFA\SIGBundle\Entity\AcademieRepository")
 */
class Academie extends Lieu
{

}

Lieu 定义:

<?php

namespace PFA\SIGBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Lieu
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="PFA\SIGBundle\Entity\LieuRepository")
 */
abstract class Lieu
{

/**
 * @var string
 *
 * @ORM\Column(name="codeLieu", type="string", length=20)
 * @ORM\Id
 */
private $codeLieu;

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

/**
 * @var float
 *
 * @ORM\Column(name="latLieu", type="float", nullable=true)
 */
private $latLieu;

/**
 * @var float
 *
 * @ORM\Column(name="lngLieu", type="float", nullable=true)
 */
private $lngLieu;
// getters and setters here...
}

【问题讨论】:

  • 异常信息是什么意思?
  • 你能告诉我们Academie的定义吗?
  • 好的,我已经编辑了帖子。看看吧:D
  • 您最近是否更新了架构? (php app/console doctrine:schema:update --force) 可以把Academie定义的相关部分放上去吗?
  • 我刚做了。我的问题呢?我可以使用字符串作为函数find 的参数吗?

标签: symfony doctrine dbal


【解决方案1】:

您的抽象类Lieu 必须是MappedSuperclass

您需要将Lieu 定义更改为:

/**
 * Lieu
 *
 * @ORM\MappedSuperclass
 */
abstract class Lieu
{
  //[...]
}

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

【讨论】:

  • 很高兴它有帮助!如果它有助于解决我们的问题,请不要忘记接受答案:)
  • 当然,我会的 ;) 我坚持了两天。如果有帮助,我会回来接受 ;)
  • 尼古拉斯,我接受了你的回答!它现在完美运行!你不知道我有多感激!我想投票赞成你的答案,但它说我需要 15 点声望(我很穷,我只有 6 点)。但我非常感谢。正如我在法语中所说的“Merci infiniment!”
猜你喜欢
  • 1970-01-01
  • 2022-11-11
  • 2021-05-17
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多