Symfony2:我可以使用find($ variable),其中$ variable是一个字符串吗?

时间:2013-04-16 17:33:12

标签: symfony doctrine dbal

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

$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...
}

1 个答案:

答案 0 :(得分:1)

您的抽象类Lieu必须是MappedSuperclass

您需要将Lieu定义更改为:

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

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