如何知道数据库中是否存在关系中的对象

时间:2010-01-20 00:00:49

标签: php symfony1 doctrine

我正在使用Symfony和Doctrine。

我定义了两个类,学生,这是一对一的关系。

每个学生相关,但并非每个都与学生有关系。

当我打电话给...

$person->getStudent();

...我总是得到并反对,无论某些没有学生。我怎么知道它没有(学生)存在于数据库中?

感谢。

3 个答案:

答案 0 :(得分:9)

我认为

$person->getStudent()->exists();

应该这样做。至少根据Doctrine API documentation 你得到的对象可能是某种Null记录。

答案 1 :(得分:3)

您还可以使用Doctrine_Record::relatedExists(),它是hasReference()

的补充

你这样使用它:

if ($person->relatedExists('Student'))

答案 2 :(得分:2)

有一个非常新的方法(我认为自Doctrine 1.2以来):$person->hasReference("Student");返回一个布尔值,表示是否实际上有一个学生与该人相关联,无论它是否已在数据库中保存,以及希望不创建新的学生记录。 该调用适用于应用程序逻辑不关心相关对象的持久性的情况,例如,在交易中(我猜)。 希望有所帮助,欢呼,RAPHAEL