Ich stellte eine ähnliche Frage, aber dies ist eine verfeinerte Version in einem Versuch, das Problem zu isolieren.symfony mit Doktrin mit Unterklasse für Ansicht - Doktrin generiert ungültige sql
Verwenden von Symfony 3 Ich befolge diese Prozedur, um eine Unterklasse einer Tabelle zu erstellen, um eine Ansicht darzustellen. Bitte beachten Sie, ich dieses erfundene Beispiel gehalten habe so einfach wie möglich ...
init db:
create database crm;
use crm;
create table customer(customer_id int primary key auto_increment, companyname text);
create view customer_view as select * from customer;
ein neues symfony-Projekt erstellen:
symfony new crm
bearbeiten parameters.yml:
Reverse-Engineer-Metadaten XML
php bin/console doctrine:mapping:import --force AppBundle xml
erstellen die Ansicht Mapper manuell src/AppBundle/Resources/config/doctrine/CustomerView.orm.xml
:
php bin/console doctrine:generate:entities AppBundle
erstellen Sie die Unterklasse Einheit manuell:
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="AppBundle\Entity\CustomerView" table="customer_view">
</entity>
</doctrine-mapping>
Einheiten erzeugen
<?php
namespace AppBundle\Entity;
class CustomerView extends Customer
{
}
?>
Jetzt erstelle ich einen Controller, der einfach fragt die Ansicht ab:
<?php
namespace AppBundle\Controller;
use ...
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$doc = $this->get ('doctrine');
$repo = $doc->getRepository ('AppBundle:CustomerView');
$result = $repo->createQueryBuilder ('c')->setMaxResults(25)->getQuery()->getResult();
return new Response('Result: ' . $result);
}
}
und den Besuch dieser Seite, die ich die folgende Ausnahme erhalten:
An exception occurred while executing 'SELECT c0_.companyname AS companyname_0, c0_.customer_id AS customer_id_1 FROM customer_view c1_ LIMIT 25':
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'c0_.companyname' in 'field list'
Wie Sie, Lehre eine Abfrage unter Verwendung eines Alias c1
für die Ansicht erzeugt hat, sehen kann, aber eines Pseudonyms gestattet c0
die wählen Säulen!
Ist das ein Fehler in der Lehre, oder mache ich etwas, das es nicht unterstützen sollte?