我正在使用Symfony与Doctrine。如何知道关系中的对象是否存在于数据库中
我定义了两个班,人和学生,关系一一对应的。
每个学生关系到一个人,但不是每个人具有用学生的关系。
当我打电话......
$person->getStudent();
......我总是和对象,无论一些人的没有一个学生。我怎么知道它不存在(数据库中存在学生)?
谢谢。
我正在使用Symfony与Doctrine。如何知道关系中的对象是否存在于数据库中
我定义了两个班,人和学生,关系一一对应的。
每个学生关系到一个人,但不是每个人具有用学生的关系。
当我打电话......
$person->getStudent();
......我总是和对象,无论一些人的没有一个学生。我怎么知道它不存在(数据库中存在学生)?
谢谢。
有一个很新的方法(我认为自从Doctrine 1.2以来):$person->hasReference("Student");
返回一个布尔值,以确定是否实际存在一个与该人相关联的学生,不管它是否已经保存在数据库中,并且根据需要而不创建新的学生记录。 这个调用可以适用于应用程序逻辑不关心相关对象的持久性的情况,例如,而在一个交易(我猜)。 希望有点帮助,欢呼声,RAPHAEL
您还可以使用Doctrine_Record::relatedExists()
,这是怎样的一个补充,以hasReference()
你使用这样的:
if ($person->relatedExists('Student'))
是的,使用'$ person-> relatedExists('Student')'方法比'$ person-> Student-> exists();好得多,因为后者实际上会在内存中创建一个新的“空白”对象,如果你调用'$ person-> save();'将其附加到'$ person',并在/如果你调用'$ person-> save – Julien 2017-01-20 11:36:37
@Felix的感谢!但是,如果记录不存在时返回'null'会更好吗?不是吗?谢谢你的帮助。 – kiewic 2010-01-20 15:01:18
@Kiewic:是的,我也有这个问题,并期望一个'null'值而不是一个对象。如果您发现有用的答案,请接受它。 – 2010-01-20 15:42:18