问题描述
在 API 文档中指定
In the API documentation it is specified that
$joinWith
- 此查询应该加入与 的关系列表$with
- 此查询应该执行的关系列表
这些ActiveQuery属性有什么区别,在什么情况下我们应该使用$joinWith
和$with
?
What is the difference between these ActiveQuery property and under what situation should we use $joinWith
and $with
?
推荐答案
with
和 joinWith
的区别使用 with
方法产生以下 SQL 查询
Difference between with
and joinWith
Using with
method results the following SQL queries
$users = User::find()->with('userGroup');
SELECT * FROM `user`;
SELECT * FROM `userGroup` WHERE userId = ...
...同时使用 joinWith
将导致此 SQL 查询
... while using joinWith
will result in this SQL query
$users = User::find()->joinWith('userGroup', true)
SELECT * FROM user LEFT JOIN `userGroup` userGroup ON user.`id` = userGroup.`userId`;
所以当我需要过滤或搜索相关表中的数据时,我使用了 joinWith
.
So I'am using joinWith
when I need to filter or search data in the related tables.
docu-> http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#joining-with-relations 会告诉你:
"在使用关系型数据库时,一个常见的任务是连接多个表,并在 JOIN SQL 语句中应用各种查询条件和参数.而不是显式调用 yii\db\ActiveQuery::join() 来构建在 JOIN 查询中,您可以重用现有的关系定义并调用 yii\db\ActiveQuery::joinWith() 来实现此目标."
这意味着,您现在可以自己处理 joins
、innerJoins
、outerJoins
以及 Yii2 中所有相关的好东西.Yii(不是 Yii2)只使用 join
而不是让用户决定 join 的类型.关于Join's"的详细信息 -> 它是一个基于 SQL 的东西.您可以在此处阅读有关内容 http://en.wikipedia.org/wiki/Join_(SQL)
Which means, you are able to handle joins
, innerJoins
, outerJoins
and all the good related stuff in Yii2 by yourself now. Yii (not Yii2) only uses join
instead without letting the user decide about type of join. Details about "Join's" -> its a SQL-Based thing. You can read about this here http://en.wikipedia.org/wiki/Join_(SQL)
这篇关于Yii2 中的 $with 和 $joinWith 有什么区别以及何时使用它们?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!