Yii2 with 和 joinWith 的區別

2022-07-26 15:42:15 字數 1082 閱讀 7472

**

先確保 topic 有getcomments()方法

class topic extends \yii\db\activerecord

}

joinwith()

topic::find()->joinwith('comments');

// 輸出的 sql

select `topic`.* from `topic` left join `comment` on `topic`.`id` = `comment`.`topic_id`

with()

topic::find()->with('comments');

// 輸出的 sql

select * from `topic`

select * from `comment` where `topic_id` in (1, 2, 3, 4, 5)

而針對於這兩者,官網上是這樣說的:

yii\db\activequery::joinwith() 和 yii\db\activequery::with() 的區別是 前者連線主模型類和關聯模型類的資料表來檢索主模型, 而後者只查詢和檢索主模型類。 檢索主模型

由於這個區別,你可以應用只針對一條 join sql 語句起效的查詢條件。 如,通過關聯模型的查詢條件過濾主模型,如前例, 可以使用關聯表的列來挑選主模型資料,

用我自己的語言,總結如下:

注意: 我把關聯表,叫做 "副表",

當你使用關聯查詢的時候, 你想排除掉副表不滿足的條件下, 主表也給排除掉, 那麼我們這時候就選 joinwith

當你不介意對應的副表是否滿足條件時, 只需要把主表顯示出來就行了, 那麼我們這時就選with

你觀察sql,你會發現, 用with的時候, 沒有with對應的sql語句, 而joinwith對應的sql語句是存在的, 這點可以注意一下

Yii2 配置yii2 redis擴充套件

前提 已經安裝redis。一 包檔案安裝 yiisoft yii2 redis extentions.php然後配置vender yiisoft extensions.php檔案 yiisoft yii2 redis array name yiisoft yii2 redis version 2.0...

Yii2 配置yii2 redis擴充套件

前提 已經安裝redis。一 包檔案安裝 yiisoft yii2 redis extentions.php 然後配置vender yiisoft extensions.php檔案 yiisoft yii2 redis array name yiisoft yii2 redis version 2....

yii2擴充套件yii2 imagine遇到的問題

最近在使用yii2移植 時,在縮圖那裡卡了兩天,幾乎搞得想崩潰,但經過我不屈不撓的努力,終於成功搞定!剛開始一直按照網上的教程,在cmd使用命令列安裝,php composer.phar require prefer dist yiisoft yii2 imagine ps 附上該方法教程 但是一直...