Die Technik, die ich verwendet habe, besteht darin, eine Entität basierend auf der Ansicht zu erstellen:
php app/console doctrine:generate:entity
Überprüfen Sie die folgenden Parameter in den erstellten Entitätsannotationen:
/**
* @ORM\Table(name="table_name")
* @ORM\Entity(repositoryClass="AppBundle\Repository\TableNameRepository")
*/
Erstellen Sie dann eine neue Tabelle mit einem SQL-Befehl:
CREATE TABLE Table_Name
AS
SELECT v.field1,v.field2,v.field3,w.field4
FROM view1 v,view2 w
WHERE v.id=w.id;
Um Ihrer Ansicht eine Doktrin wie den Primärschlüssel hinzuzufügen, verwenden Sie diese Anweisung:
ALTER TABLE Table_Name ADD INT PRIMARY KEY AUTO_INCREMENT NOT NULL;
ALTER TABLE Table_Name ADD CONSTRAINT pk_id PRIMARY KEY(id)
Oder Sie können den neuen Tabellennamen mit Doctrine angeben und mit einem :
erstellenphp app/console doctrine:schema:update --dump-sql
gefolgt von einem
php app/console doctrine:schema:update --force
Dann verwenden Sie Ihre Entität im Controller, so einfach ist das.