0
該查詢是如下翻譯SQL查詢的CakePHP 3.0
select T.username,
sum(T.size) as totSize,
count(*) total,
count(case when T.type = 'facebook' then 1 else null end) as facebook,
count(case when T.type = 'instagram' then 1 else null end) as instagram,
count(case when T.type = 'device' then 1 else null end) as device
from (SELECT users.username, pictures.size, pictures.type from users left join pictures on pictures.user_id = users.id) as T
group by T.username
關聯到每個「用戶」有幾個「畫面」。 基本上,我想要做的是:
- 左按類型用戶加入和圖片表
- 計數圖片
- 總結畫面由用戶尺寸
- 組
的SQL查詢適用於數據庫時工作正常,但我需要在我的CakePHP 3.0應用程序中表示這一點。 我設法使用模型關聯LEFT JOIN表。在UsersTable:
$this->hasMany('Pictures', [
'foreignKey' => 'user_id',
'joinType' => 'LEFT'
]);
然後在我的查找方法:
$options['contain'] = ['Pictures' => function ($q) {
return $q
->select(['user_id', 'size', 'type']);}];
$options['fields'] = array('Users.username');
$query = $this->find('all', $options);
如何繼續查詢?如果我嘗試訪問包含的數據(與'Pictures.type'一樣),我返回SQL錯誤,指出該列不在字段列表中。 我覺得這可能是錯誤的方法,但我想不出其他方法。
在此先感謝!
爲什麼子選擇,是這樣的表現有關係嗎?如果沒有測試,我可以想象非子查詢的使用可能實際上會更快。 – ndm