2

次のSQLクエリをcakephp形式で書くにはどうすればよいですか

SELECT 
`ActivityLog`.`id`, 
CASE User.user_type
WHEN 'admin' THEN concat_ws(' ',Admin.first_name,Admin.last_name)
END,
FROM `project`.`activity_logs` AS `ActivityLog` 
left join users as User on ActivityLog.user_id = User.id 
left join admins as Admin on User.id = Admin.user_id
WHERE 1 = 1 ORDER BY `ActivityLog`.`datetime` desc

caseステートメント以外はすべて問題ありません。助けてください..

4

2 に答える 2

4

このクエリを試す

$this->ActivityLog->find('all', array(
  'fields' => array(
       'ActivityLog.id',
       '((CASE User.user_type WHEN 'admin' THEN concat_ws(' ',Admin.first_name,Admin.last_name) END)) AS UserName'
   ),
   'joins' => array(
        'LEFT JOIN users as User ON ActivityLog.user_id = User.id'
        'LEFT JOIN admins as Admin on User.id = Admin.user_id'
    ),
   'recursive' => -1
);
于 2013-05-07T06:38:34.113 に答える
1

CakePHP のように CASE を使用できます。

$this->YourModel->find('all', array(
  'fields' => array(
    'ActivityLog.id',
    '((CASE User.user_type WHEN 'admin' THEN concat_ws(' ',Admin.first_name,Admin.last_name)
END)) AS
some_alias_name'
  ) 
....rest of your query
于 2013-05-07T06:21:53.133 に答える