gpt4 book ai didi

php - Yii2 中的 $with 和 $joinWith 有什么区别以及何时使用它们?

转载 作者:IT王子 更新时间:2023-10-29 01:10:12 25 4
gpt4 key购买 nike

在API文档中指定

  • $joinWith - A list of relations that this query should be joined with
  • $with - A list of relations that this query should be performed with

$joinWith$with 这些 ActiveQuery 属性有什么区别,什么情况下应该使用?

最佳答案

joinWith 使用 JOIN 将关系包含在原始查询中,而 with 不使用。

为了进一步说明,考虑一个类 Post 与关系 comments 如下:

class Post extends \yii\db\ActiveRecord {
...
public function getComments() {
return $this->hasMany(Comment::className(), ['post_id' => 'id']);
}
}

使用 下面的代码:

$post = Post::find()->with('comments');

以下 sql 查询的结果:

SELECT `post`.* FROM `post`;
SELECT `comment`.* FROM `comment` WHERE post_id IN (...)

而下面的 joinWith 代码:

$post = Post::find()->joinWith('comments', true)

查询结果:

SELECT `post`.* FROM post LEFT JOIN `comment` comments ON post.`id` = comments.`post_id`;
SELECT `comment`.* FROM `comment` WHERE post_id IN (...);

因此,当使用 joinWith 时,您可以按关系排序/过滤/分组。您可能必须自己消除列名的歧义。

引用:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#lazy-eager-loading

关于php - Yii2 中的 $with 和 $joinWith 有什么区别以及何时使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25600048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com