我知道這個問題可能會提前問及我已經應用了那裏提到的修復程序,但它們不工作。左連接在活動記錄中不顯示空記錄Yii
這裏是我的問題:
我有,我想加入,並獲得滿意的結果兩個表。
- 任務(ID,狀態,task_type_id)
- task_type(ID,task_type_name)
有一個對任務task_type之間一對多的關係。
我的要求:
我想所有的用戶已經創建了通過task_type_id,目前未完成分組的任務。
這是我曾嘗試:
$criteria = new CDbCriteria();
$criteria->select = "t.*, t2.task_type_id,count(t2.task_type_id) as total";
$criteria->join = "LEFT JOIN task t2 on t.id=t2.task_type_id";
$criteria->condition = "t.user_id=" . $user_id . " OR t.user_id is NULL";
$criteria->addCondition("t2.user_id=" . $user_id);
$criteria->addCondition("t2.status='Incomplete'");
$criteria->group = "t.id";
$criteria->order = 'total desc';
$task_types = TaskType::model()->findAll($criteria);
它返回的一切正確的,但task_type表的空值不顯示。即它只顯示任務確實存在的task_type。它不顯示task_type不存在的task_type。我想要任務存在或不存在的所有task_types。
有人可以建議修復嗎?我使用了左連接,它應該返回兩種類型的task_types,但它不起作用。
看起來您需要使用LEFT JOIN並將WHERE更改爲AND – Madhivanan
已經使用了LEFT JOIN以及在哪裏更改'where'?條件屬性被轉換爲活動記錄中的哪個位置 – Hammad