Execute Custom Queries and SQL in CakePHP 3 & 4
Execute Custom & Parameterized SQL in CakePHP 4 & CakePHP 3
CakePHP4:
Add in your controller:
use Cake\Datasource\ConnectionManager;
Example 1:
$conn = ConnectionManager::get('default');
$stmt = $conn->execute('UPDATE articles SET views_logged_in=views_logged_in+1, some_field=? WHERE id=?', array('some_field_value', $id));
Example 2 - Parameterized with a subquery:
$conn = ConnectionManager::get('default');
$userList = $conn->execute("
SELECT
users.id, users.username, users.first_name, users.last_name, users.organization_name, users.email
FROM
users
WHERE
users.is_deleted<>'1' AND
users.id <> :origUserId AND
users.id IN (
SELECT
user_id
FROM
grant_applications
WHERE
is_deleted <> 1
GROUP BY user_id
) ", [ 'origUserId' => $origUserId ]
)->fetchAll('assoc');
CakePHP3:
Add in your controller:
use Cake\Datasource\ConnectionManager;
$conn = ConnectionManager::get('default');
$stmt = $conn->execute('SELECT * FROM customers');
$results = $stmt ->fetchAll('assoc');