У меня есть вид на схему nomencladores
называемую obtenerPaisesPorFabricanteProductoSolicitud
. Это содержимое для представления:
SELECT ps.id AS psid, ps.nombre, fps.id AS fpsid FROM ( ( nomencladores.pais ps JOIN nomencladores.pais_fabricante_producto_solicitud pfps ON ((pfps.pais_id = ps.id)) ) JOIN negocio.fabricante_producto_solicitud fps ON ( ( pfps.fabricante_producto_solicitud_id = fps.id ) ) );
Я пытаюсь отобразить представление следующим образом:
use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="nomencladores.obtenerPaisesPorFabricanteProductoSolicitud", schema="nomencladores") */ class ObtenerPaisesPorFabricanteProductoSolicitud { /** * @ORM\Id * @ORM\Column(name="psid", type="integer", nullable=false, unique=true) */ protected $ps; /** * @ORM\Column(name="fpsid", type="integer") */ protected $fps; /** * @ORM\Column(name="nombre", type="string") */ protected $nombre; public function getPs() { return $this->ps; } public function getFps() { return $this->fps; } public function getNombre() { return $this->nombre; } }
Но в любой момент я запускаю этот код:
$ent = $em->getRepository("AppBundle:ObtenerPaisesPorFabricanteProductoSolicitud")->findBy( array( "fps" => $entF->getId() ) );
Я получил этот результат:
Исключение произошло при выполнении «SELECT t0.psid AS psid1, t0.fpsid AS fpsid2, t0.nombre AS nombre3 FROM nomencladores.obtenerPaisesPorFabricanteProductoSolicitud t0 WHERE t0.fpsid =? ' с параметрами [22]: SQLSTATE [42P01]: неопределенная таблица: 7 ОШИБКА: отношение «nomencladores.obtenerpaisesporfabricanteproductosolicitud» не существует LINE 1: … d1, t0.fpsid AS fpsid2, t0.nombre AS nombre3 FROM nomenclado …
Если я удалю аннотации, тогда на этом будет преобразование ошибки:
«Класс» AppBundle \ Entity \ ObtenerPaisesPorFabricanteProductoSolicitud «не является допустимым сущностью или отображенным суперклассом».
Почему Doctrine2 или Symfony пытается выполнить запрос, вместо этого просматривают представление? Как я могу выполнить представление со стороны Symfony2 / Doctrine2?
РЕДАКТИРОВАТЬ
В качестве побочного примечания я использую PostgreSQL в качестве базы данных, и у него есть несколько squemas, в этом случае я написал представление в схемах nomencladores
но я попытался поместить также в public
схему, и никто не работает, по-видимому Doctrine не находит вид на схеме