Методы модели findBy и findAllBy
В документации как-то очень мельком упомянуты эти методы. Кроме того описание этих методов выглядит так:
findBy<fieldName>(string $value)
Хотя на самом деле это не совсем соответствует действительности. Для поиска одной записи по значению одного поля описание должно выглядеть так:
findBy<fieldName>(string $value, $fields=null, $order=null, $recursive=null)
и
finAlldBy<fieldName>(string $value, $fields=null, $order=null, $limit=null, $page=null, $recursive=null)
Разница есть. Лично я очень обрадовался параметру $recursive — не надо отдельно, перед вызовом метода устанавливать это значение или ображаться к Containable.
Но и это еще не все!
Можно задавать несколько полей для условия, объединяя их AND и OR. Вполне работает такая конструкция:
$this->User->findByIdAndActive(123, 1)
Получится запрос типа
SELECT * FROM User WHERE id=123 AND active=1
Если в условии участвуют несколько полей, то их значения для поиска должны быть первыми параметрами для вызова метода, в том порядке, в котором перечислены названия полей модели. А уж после значений для поиска можно добавлять аргументы $fields, $order и т.д.



