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

问题描述:

抛出一个异常,因为在我的代码行:

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

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

通常,官方文档使用find($id),其中$id是一个数字(整数)。为此,我问是否可以使用字符串。事情是我有一张桌子,我必须得到一个值,我可以与另一个比较,以便我可以创建一个对象。

对于记录,$acadDelegAcademie实体

EDIT的主键:

异常消息:

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 
{ 

} 

的列乌定义:

<?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... 
} 
+0

什么是异常消息说? – gatisl

+0

你能告诉我们“Academie”的定义吗? – cheesemacfly

+0

好的,我编辑了这篇文章。看看它:D – Sherlock

您的抽象类Lieu必须是MappedSuperclass

您需要更改Lieu定义:

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

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

+0

很高兴帮助!不要忘了接受答案,如果它有助于解决我们的问题:) – cheesemacfly

+0

当然,我会;)我坚持了这个为期两天..我会回到这里接受,如果它帮助;) – Sherlock

+1

尼古拉斯,我接受了你的回答!它现在完美运行!你不知道我有多感谢!我想投你的答案,但它说我需要15点的声誉(我很穷,只有6点)。但我非常感谢。正如我用法语“Merci infiniment!”所说的那样! – Sherlock