我有以下四个字段的实体:$id, $name, $flagFileName
和$inUse
。Symfony2:存储库的findAll()返回同一个实体的多个实例,而不是所有实体
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Language
*
* @ORM\Table(name="language", uniqueConstraints={@ORM\UniqueConstraint(name="name_UNIQUE", columns={"name"})}, indexes={@ORM\Index(name="key_in_use", columns={"in_use"})})
* @ORM\Entity
*/
class Language
{
/**
* @var boolean
*
* @ORM\Column(name="id", type="boolean", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=60, nullable=false)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="flag_file_name", type="string", length=6, nullable=false)
*/
private $flagFileName;
/**
* @var integer
*
* @ORM\Column(name="in_use", type="integer", nullable=true)
*/
private $inUse;
/**
* @return string
*/
public function getFlagFileName()
{
return $this->flagFileName;
}
/**
* @param string $flagFileName
* @return Language
*/
public function setFlagFileName($flagFileName)
{
$this->flagFileName = $flagFileName;
return $this;
}
/**
* @return boolean
*/
public function isId()
{
return $this->id;
}
/**
* @param boolean $id
* @return Language
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* @return int
*/
public function getInUse()
{
return $this->inUse;
}
/**
* @param int $inUse
* @return Language
*/
public function setInUse($inUse)
{
$this->inUse = $inUse;
return $this;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
* @return Language
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
function __toString()
{
return $this->getName();
}
}
该表已经在我的MySQL数据库的结构如下:
CREATE TABLE `language` (
`id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
`flag_file_name` char(6) NOT NULL,
`in_use` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`),
KEY `key_in_use` (`in_use`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
我的问题是,当我尝试从存储库中获取所有语言时,我得到第一条记录的N个实例,而不是所有记录(其中N是“语言”表中的记录数)。
要清楚,当我运行出发,按照我的控制器的动作的第一个指令:
$this->getDoctrine()->getRepository("AppBundle:Language")->findAll()
我得到如下:
我有望获得什么,是一个充满了所有语言的数组,不仅是第6次重复的第一种语言!为什么会发生?
为什么你输入$ id作为布尔值? – scoolnico
我建议检查你的模板代码。你可能会得到四个不同的实体,但是你的显示器很混乱。 – Cerad
我认为教义不能区分另一个,因为所有的条目都有相同的id值 - 是真的。 – Alex