我有以下四个字段的实体:$id, $name, $flagFileName
和$inUse
。
<?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是“语言”表中的记录数)。 / p>
为清楚起见,当我将以下内容作为控制器操作中的第一条指令运行时:
$this->getDoctrine()->getRepository("AppBundle:Language")->findAll()
我得到以下内容:
我期望收到的是一个充满所有语言的数组,而不仅仅是第一个重复6次的语言!为什么会这样?
答案 0 :(得分:2)
如果您自动生成了实体,则认为您的id
字段是布尔值,因为您将其定义为tinyint(3)
。如果没有,则您错误地定义了它,它应该是@ORM\Column(name="id", type="integer", nullable=false)
。
此外,isId()
函数应为getId()
,并且应移除setId()
函数。所以你应该看到这个:
/**
* @return int
*/
public function getId()
{
return $this->id;
}
答案 1 :(得分:1)
您的$id
注释中存在拼写错误。类型必须为"integer"
而非"boolean"