Query format with associations
Rooms belong to properties. To fetch all the properties with name and location as the query search/filter parameter below is a how one gets to achieve this:
$q = $this->getRequest()->getQuery('q');
$q = strtolower($q);
$rooms = $this->paginate($roomsTable->find()
->matching('Properties.Landlord', function ($query) {
return $query->where([
'active ' => 'yes',
]);
})
->where([
'Rooms.occupied' => 'no',
'Rooms.occupant_id IS' => null,
'OR' => [
'LOWER(Rooms.name) LIKE' => "%$q%",
'Rooms.cost LIKE' => "%$q%",
'LOWER(Properties.name) LIKE' => "%$q%",
'LOWER(Properties.location) LIKE' => "%$q%",
],
])
->contain(['Properties.Agents.Managers']));