Symfony2实体findAll()

时间:2014-05-06 17:19:07

标签: symfony doctrine findall

我有7行的数据库表,我试图用findAll函数

获取这些行
$machine_current_counter_repo = $this->getDoctrine()->getRepository('DummyMonitorBundle:MachineCurrentCounter');

$counters = $machine_current_counter_repo->findAll();

结果是7行,但所有行都包含第一行的数据。

这是database table entity.

表格结构:

`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;

1 个答案:

答案 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 更新您的架构,然后将数据重新创建到表格中。