Consultas
Estos son algunos ejemplos de consultas complejas en CakePHP:
- Consulta con condiciones anidadas:
 
$workers = $this->Workers->find('all', [    'conditions' => [        'Workers.id IN' => $this->Contracts->find('all', [            'conditions' => [                'OR' => [                    'category_ciqus_id IN' => $conditions,                    ['end_date is null', 'category_ciqus_id IN' => $conditions],                    ['end_date >' => date('Y-m-d'), 'category_ciqus_id IN' => $conditions]                ]            ]        ])->select('worker_id')    ]]);- Consulta con condiciones simples:
 
$workers = $this->Workers->find('all', [    'conditions' => [        'Workers.id IN' => $this->Contracts->find('all')->select('worker_id')->where(['end_date is null', 'category_ciqus_id IN' => $categories_ids])->orWhere(['end_date >' => date('Y-m-d'), 'category_ciqus_id IN' => $categories_ids])    ]]);- Consulta con funciones de agregación (SUM/AVG/COUNT):
 
$query = $this->WorkingDays->find('all', [    'conditions' => [        'user_id' => $user->id,        'work_day >=' => $start_date,        'work_day <=' => date("Y-m-t", strtotime($start_date))    ]]);$workingDays_calculated = $query->select([    'total_seconds' => $query->func()->sum('WorkingDays.total_seconds'),    'avg_seconds' => $query->func()->sum('WorkingDays.total_seconds'),    'total_days_worked' => $query->func()->sum('WorkingDays.id')])->first();- Consulta con SQL directo:
 
use Cake\Datasource\ConnectionManager;$connection = ConnectionManager::get('default');$total_earnings_tickets = $connection    ->execute(        'SELECT (SUM(total_tax)) AS "total_tax", (SUM(total_discounted)) AS "discount", (SUM(total_without_tax)) AS "total_without_tax", (SUM(total)) AS "total_calculated" FROM tickets WHERE (parking_id = ' . $parking->id . ' AND status = 1 AND date(output_date) >= \'' . date('Y-m-d', strtotime($firstDayOfMonth) ) . '\' AND date(output_date) < \'' . date('Y-m-d', strtotime($lastDayOfMonth) ) . '\'::date)'    )    ->fetchAll('assoc')[0];- Consulta con agrupación y condiciones relacionadas:
 
$contracts_by_sexes = $this->Workers->find('all', [    'contain' => ['Sexes'],    'group' => 'Sexes.name',    'fields' => [        "count_contracts_sex" => "COUNT(Sexes.name)",        'name' => 'Sexes.name'    ]])->matching('Contracts', function ($q) {    return $q->where(['Contracts.end_date is null'])            ->orWhere(['Contracts.end_date >' => date('Y-m-d')]);});Estos ejemplos muestran diferentes formas de realizar consultas complejas en CakePHP, desde consultas con condiciones anidadas hasta consultas SQL directas y consultas con funciones de agregación.