我有两个通过联结表关联的模型。
$model->link()
是用于建立两个模型之间关系的方法。它基本上使用两个模型的对应键填充联结表。
如果链接了两个模型,而我尝试再次链接它们,则会出现错误,因为键对已经存在于联结表中。然后,在尝试链接模型之前,需要检查此关系是否存在。
我想我可以为联结表创建一个模型并查询正确的记录。该查询的结果将告诉我是否需要执行链接。
问题是:
使用某些yii内置方法,有没有一种简便的方法可以执行此检查?
ActiveQuery
有exists()
满足您需求的方法。假设您有一个Book
链接到Author
该类的类。所以,Book
有getAuthor()
方法。这是查找相关记录是否存在的方法:
$book->getAuthor()->exists();
请注意,它$book->author
返回的实例Author
(如果是hasMany
关系,则getAuthor()
返回数组),而返回一个ActiveQuery
实例。
执行exists()
仍然像$book->author
以前一样运行一个SQL查询,但是该查询比实际获取数据和创建相应的模型更有效。
另一方面,在许多情况下,性能改进是微不足道的,因此您可以运行isset($book->author)
并完成它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句