[英]How to get multi activerecord model with only 1 join query in Yii2?
例如:
询问
SELECT book.\*,author.* FROM book
INNER JOIN author ON author.id = book.author_id
WHERE book.id=1
获取模型
$modelBook = Book::find()->innerJoin('author','author.id = book.author_id')->where(['book.id'=>1])->one();
$modelAuthor = Author::findOne(['id'=>$modelBook->author_id]);
问题:
我如何只用一个mysql执行2 activerecord model Book
和Author
?
我知道我们可以使用with()
函数,但是它花了另一个查询SELECT ...IN(...)
来获取第二个模型,尽管我们从联接查询中获得了足够的数据
有没有更有效的解决方案?
ActiveRecord用于ActiveRecord类的模型扩展。您似乎正在使用查询而不是“模型”,所以我建议您使用activeDataProvider。
您可以使用getModels()函数引用由dataProvider管理的模型
$provider = new SqlDataProvider([
......
]);
// returns an array of data rows
$models = $provider->getModels();
有关详细信息,请参见本指南和参考
http://www.yiiframework.com/doc-2.0/guide-output-data-providers.html http://www.yiiframework.com/doc-2.0/yii-data-sqldataprovider.html
尝试这个 :
在性能的情况下,使用方法并不慢。
$modelBook = Book::find()->with('YOUR_RELATION_NAME_HERE')->findByPK(id);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.