使用复合键从doctrine集合中获取值

时间:2012-05-18 04:21:32

标签: doctrine symfony-1.4

使用Doctrine对我的应用程序进行了4次操作。

在那里我使用以下doctrine命令来检索人物对象集合

//query
$people = $q->execute();

这返回20个对象。 person对象的主键是具有三个属性的复合键。那些是

id
department_id
name

我需要通过如下搜索来获取人物对象。

$id = 10;
$department_id = 1;
$name = "abc";

$people->get($id, $department_id, $name);

但这不起作用,也没有给出正确的结果。我尝试了这个,它给出了null结果,似乎我的集合主键没有设置。

$people->getKeyColumn();

我不想在收集中经历foreach循环并处理它,因为当我处理大约500个人时,它会减慢我的应用程序。

有人可以帮助我解决这个问题,从教义集合中获取值。

2 个答案:

答案 0 :(得分:1)

你能用这样的东西吗?

  $people = Doctrine::getTable('Persons')
    ->createQuery()
    ->where('id = ? AND department_id = ? AND name = ?', array($id, $department_id, $name))
    ->execute();

它将为您提供已根据提供的参数进行过滤的DoctrineCollection。

'Persons'这里是一个Doctrine模型名,而不是mySQL的表名。

答案 1 :(得分:0)

你也可以使用Doctrine的魔术探测器findBy*()

$people = Doctrine_Core::getTable('Persons')
    ->findByIdAndDepartmentIdAndName($id, $department_id, $name);