BoShurik: а если при doctrine:generate:entities создается только: addAlbum() removeAlbum() и getAlbums()?
Правильно ли в Entity дописывать что-то этакое самостоятельно?
BoShurik: все так, но так не работает. Это было бы слишком легко. По-моему orderBy отвечает только за правильное построение запроса в базе, но никак не к автоматической сортировке после манипуляций с полученными данными
vendetto: это логично, но я может чего-то не понимаю
Например, в
@JoinColumn(name="target_id", referencedColumnName="id")
"referencedColumnName" должно быть первичным ключом
Получается, мне нужно вторичный ключ (id компании - target_id) из Subdomain перенести в Company (и уже будет id субдомена)?
А можно ли изменить владельца, поменять местами?
Мне нужно к Company привязать Subdomain, но у меня вторичный ключ не в Company, а в Subdomain (target_id).
Получается, я могу оставить связь не с нужной мне стороны.
В документации я что-то не нашел, как сделать связь наоборот
Дмитрий Вапельник: вот в этом и проблема. Я нигде не обращаюсь к отношению, а запрос происходит, черт его дери..
После find(), findBy() и тд не происходит,
после $qb->select('c')->from('TestBundle:Company', 'c'); происходит i.stack.imgur.com/5jDhh.jpg
В комментариях первого ответа я уже объяснил, что Product это пример из документации, ссылку на которую я тоже оставил. У меня же только ДВЕ сущности, компании и субдомены.
Что значит "ленивая загрузка происходит всегда"? Значит, что к ней можно обратиться, если нужно, или что она срабатывает автоматически, даже если не просишь?
Если написать:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('c')
->from('TestBundle:Company', 'c');
То должны ли для каждой компании автоматически отдельными запросами выбрать субдомены? У меня выбираются, а мне нужен просто список компаний, построенный через QueryBuilder
Как "fetch-ить сущности отношений как EAGER"? Где в документации об этом говорится?
Нет. Если быть немного внимательным, то можно дважды прочитать, что у меня только ДВЕ сущности, и что перед кодом с Product есть двоеточие, которое говорит, что это пример из документации, на которую еще и есть ссылка. Если вопрос "почему срабатывает загрузка", то очевидно, что она не нужна. Мне нужны только Company, без Sebdomain. И мне интересно, почему, если использовать вместо find() свой построенный query, то идет и выборка по связям, о которых никто не просил
Vladislav Vlastovskiy: если перейти по ссылке примера, то можно увидеть описание связи один-ко-многим из документации и "ленивую" загрузку, где и есть этот Product. У меня же "две сущности со связью один-к-одному": Company и Subdomain. Если использовать find(), то, как и сказано в документации, я получаю только Company (допустим, я хочу 10 компаний получить). Если написать свой query, то я получаю 10 компаний одним запросом и автоматом для каждой компании по судбомену еще 10-ю запросами. Итого 11 запросов к базе
У меня видимо где-то были проблемы и на что-то подобное
$qb->setParameter('cityId', $cityId);
$qb->setParameter('catId', $catId);
выдавало "мало параметров - 1, нужно 2"
И я подумала, что затираются, оказывается нет. Вопрос снимается, но спасибо за ответ
Вы не поняли сути вопроса. Он касается скорее чистого кода, а не возможностей.
Можно ли добавить параметры к уже установленным, ведь setParameters() заменяет их полностью. По идее, для этого есть функция getParameters(), чтобы к старым параметрам руками добавить новые и опять через set положить все на место (или же она не для этого создана?). Говорит ли это о том, что правильнее (логичнее/чище) добавлять параметры всегда скопом?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Но спасибо