public function findByIds(array $ids)
Достает список моделей по массиву их первичных ключей
public function findFrame($start = 0, $limit = 0)
Аналог findAll(), но можно взять фрейм из всех моделей, начиная с позиции $start длинной в $limit
public function count()
Считает количество моделей в репозитории.
Ну, и так не стоит забывать про методы, которых нет, но которые есть :) Это "магические" методы, которые предоставляет Doctrine 2. Это:
- findOneByField($fieldValue)
- fineByField($fieldValue)
Field в данном случае - это имя поля, по которому ведется поиск, на соответствие этого поля значению $fieldValue. Первый метод вернут одну первую модель, второй - все модели. Как пример, поиск одного продукта по цене выглядит так:
$product = \XLite\Core\Database::getRepo('XLite\Model\Product')->findOneByPrice(19.99);
На самом деле, эти "магические" методы упираются в обычные методы findOneBy и fineBy, которые принимают на вход хэш-массив значений. Поэтому этот же поиск продукт можно написать так:
$product = \XLite\Core\Database::getRepo('XLite\Model\Product')->findOneBy(array('price' => 19.99));
Но, так делать не стоит по простой причине - если какой-то модуль, в будущем, или даже вы сами в следующих версиях модуля, захотите как-то повлиять на эту выборку, то вам придется и создавать метод в классе-репозитории и менять все вызовы, где бы они не были. А вот если использовать "магические" методы - то достаточно просто написать метод в репозитории - и "магический" __call() больше срабатывать не будет, а будет вызываться ваш метод. Соответственно - изменений меньше, код читается лучше.
Комментариев нет:
Отправить комментарий