Максим, спасибо. Я вижу редактор, но когда жму сохранить то вижу
Neither the property "formatType" nor one of the methods "addFormatType()"/"removeFormatType()", "setFormatType()", "formatType()", "__set()" or "__call()" exist and have public access in class "CrbrBundle\Entity\Page
Причем кеш почистил.
в Page добавил
public function getFormatType() {
return '';
}
что очевидно, ведь появился редактор.
Да, точно. Я сначала указал - потом случайно затер. Тогда вопрос, как использовать кешинг? Ведь нельзя отдать ->getQuery()
->useResultCache(true, 60*60*24, 'category_cache') . useResultCache только после getQuery
Catchable Fatal Error: Argument 2 passed to Doctrine\ORM\EntityRepository::__construct() must be an instance of Doctrine\ORM\Mapping\ClassMetadata, none given, called in
Алексей Павлов: вообще не хочет. joxi.ru/E2pvRXOsXbGyrY
atchable Fatal Error: Argument 2 passed to Doctrine\ORM\EntityRepository::__construct() must be an instance of Doctrine\ORM\Mapping\ClassMetadata, none given,
Не передаются ему и точка.
services:
crbr.item_repository:
class: ParserBundle\Repository\CrbrItemRepository
factory-service: doctrine.orm.entity_manager # тут я пробовал по разному
factory-method: getRepository
#public: false
arguments: [ ParserBundle:CrbrItem ]
<?php
namespace ParserBundle\Repository;
use Doctrine\ORM\EntityRepository;
class CrbrItemRepository extends EntityRepository
{
Алексей Павлов: у меня все получилось. Действительно сервисы это сила. Как я понял, даже все запросы к бд лучше держать там. У меня осталось два вопроса. Я подключаю
Проблема с $entityManager . У меня две бд, в аргументах к сервису передаю вот
- "@doctrine.orm.entity_manager" но тогда
use Doctrine\ORM\EntityManager;
public function __construct($ratio, $minCommission, EntityManager $entityManager)
Он не понимает где искать. Как мне передать entity_manager с нужным orm (у меня их два crbr и main)
Работает пока так
public function __construct($ratio, $minCommission, $doctrine) {}
$this->em = $doctrine->getManager('crbr');
Конфиг
- "@doctrine" #- "@doctrine"
Второй вопрос. А если у меня передается не одно значение item, а целая выборка для списка?
Как быть с обработкой - самый простой вариант какой?
Сергей, если я регистрирую репозитарий как сервис ( прописываю то, что вы указали в конфиге) - то мне уже не нужно создавать файл сервиса и что то в нем писать?
Алексей Павлов: Спасибо. Разобрался(обновил в теме) . Единственное неудобство, если я в репозитарии creatQueryBuilder обозначил как i. То везде в запросах я уже должен обращаться как с i.rating и так далее. С r.rating как было уже не прокатит. До сервисов увы еще не дошел. Если есть статьи про Repositary и Service буду благодарен.
Допустим, я создал class ItemRepository extends EntityRepository с public function exist() {//тут я еще не понял как сделать} . Потом в контроллере когда я делаю нужные выборки у меня допустим так $top = $em->getRepository('Bundle:Item')
->createQueryBuilder('r')
->where('r.price > :price')
->andWhere('r.rating > :rate')
->setParameters(array(':price' => 10000, ':rate' => 3))
->setFirstResult(rand(0, $count - 1))
->setMaxResults(9)
->getQuery()
->getResult();
Но получится ли тогда с сделать так? $em->getRepository('Bundle:Item')->exist()
->createQueryBuilder('r')
->where('r.price > :price')
->andWhere('r.rating > :rate')
->setParameters(array(':price' => 10000, ':rate' => 3))
->setFirstResult(rand(0, $count - 1))
->setMaxResults(9)
->getQuery()
->getResult();
Вот тут и хотелось бы полноценный пример. Как написать условие в репозитарии и потом приконнектить его