我有7行的数据库表,我试图用findAll函数
获取这些行$machine_current_counter_repo = $this->getDoctrine()->getRepository('DummyMonitorBundle:MachineCurrentCounter');
$counters = $machine_current_counter_repo->findAll();
结果是7行,但所有行都包含第一行的数据。
表格结构:
`machine_current_counter` (
`machine_id` tinyint(3) unsigned NOT NULL,
`counter_value` int(10) unsigned NOT NULL,
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`machine_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
什么可能导致这个问题?
聚苯乙烯。实体是从数据库生成的,所以默认情况下第一列设置是这样的(不确定为什么类型是“boolean”,但我将其更改为整数,仍然没有解决问题):
/**
* @var boolean
*
* @ORM\Column(name="machine_id", type="boolean")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $machineId;
答案 0 :(得分:0)
@ORM \ Id 表示此字段的值必须是唯一的。对于布尔类型,它们在2行或更少行中可以是唯一的(因为布尔值只有2个值 - 0和1)。 我认为你有逻辑错误,必须简单地将字段类型更改为整数。像那样:
/**
* @var integer
*
* @ORM\Column(name="machine_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $machineId;
然后通过 ./ app / console doctrine:schema:update 更新您的架构,然后将数据重新创建到表格中。