Использование EntityRepository :: findBy () с отношениями «многие ко многим» приведет к появлению E_NOTICE в Doctrine.
Для проекта Symfony2 мне нужно было создать связь между постом в блоге и так называемыми платформами. Платформа определяет определенный фильтр на основе домена, который вы используете для просмотра сайта. Например: если вы присоединяетесь к сайту по адресу url first-example.com, сайт будет предоставлять только сообщения в блоге, которые связаны с этой конкретной платформой.
Для этого я создал две сущности Post и Platform. После этого я сопоставил их с отношениями «многие ко многим». Я'я пытаюсь получить данные через это отношение «многие ко многим» из встроенной функцииfindBy()
в доктринах ,EntityRepository
// every one of these methods will throw the same error
$posts = $postRepo->findBy(array('platforms' => array($platform)));
$posts = $postRepo->findByPlatforms($platform);
$posts = $postRepo->findByPlatforms(array($platform));
куда$postRepo
правильный репозиторий дляPost
сущность и$platform
существующийPlatform
объект.
В любом случае: я получаю следующую ошибку:
ErrorException: Notice: Undefined index: joinColumns in [...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1495
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1495
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1452
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1525
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:1018
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:842
[...]/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php:157
[...]/src/Foobar/BlogBundle/Tests/ORM/PostTest.php:102
Можно ли даже таким способом извлечь связанные объекты в отношениях «многие ко многим», или я вынужден сам написать эти функции? Странная вещь: доктрина не выдаст никакой ошибки вроде: «Это'не возможно "., но внутреннийE_NOTICE
, Вот почему я думаю, что это возможно, но яЯ упускаю некоторые моменты здесь.
Разобравшись до интересных частей, две сущности выглядят так.