Comments 8
Если в WordPress ничего не поменялось в плане пакетных менеджеров (а я сомневаюсь), то это хорошо лишь до тех пор пока какой-то другой плагин или тема тоже не захочет использовать доктрину, тогда, как правило, возникают конфликты версий/автолоадера/чего хочешь и просто так их не решить.
В своё время мы пытались настроить перетаскивание пакета к себе в неймспейс при деплое, но от этой идеи отказались т.к. готовые инструменты работали не очень хорошо, а писать своё было долго и дорого. В итоге пакет просто заменили на самопис, благо небольшой был.
Есть ли у вас решение для подобных проблем?
Для wordpress есть wpackagist, но к сожалению это никак не решает проблему неймспейсов. Можно только надеяться на чудо, что нет пересечения неймспейсов с плагинами, которые ты используешь. На практике если использовать актуальные версии популярных плагинов, то проблем особо не возникает. Уже около 10 проектов мной было интегрирован Symfony фреймворк с Wordpress и пока работает все стабильно.
доктрина для любителей делать n+1 запросов
Это N+1 легко решается, например через QueryBuilder
в чем смысл тогда? быстрее тогда уж на чистом SQL. в том же Eloquent это решается ->with('relation'), в доктрине с many to many, one to many жадная загрузка не работает
По дефолту в доктрине ленивая загрузка. Если ленивую загрузку нужно часто использовать, то это оправдано, просто в частных случаях используем $qb->join('relation'). Если же нужна жадная загрузка по дефолту то просто используем атрибут fetch EAGER #[ORM\ManyToMany(targetEntity: Entity::class, mappedBy: 'entities', fetch: 'EAGER')]
И уже это будет работать без QueryBuilder
А можно пример n+1 в доктрине?
Внедрение Doctrine ORM в Wordpress