У меня есть вид на 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 ОТ
nomencladores.obtenerPaisesPorFabricanteProductoSolicitud t0 ГДЕ
t0.fpsid =? ‘ с параметрами [22]:
SQLSTATE [42P01]: неопределенная таблица: 7 ОШИБКА: отношение «nomencladores.obtenerpaisesporfabricanteproductosolicitud» не
существует ЛИНИЯ 1: … d1, t0.fpsid AS fpsid2, t0.nombre AS nombre3 ОТ
nomenclado …
Если я удаляю аннотации, то ошибка преобразуется в это:
«Учебный класс
«AppBundle \ Entity \ ObtenerPaisesPorFabricanteProductoSolicitud» не является действительным объектом или сопоставленным суперклассом ».
Почему Doctrine2 или Symfony пытаются выполнить запрос, а не просматривать представление? Как я могу выполнить представление со стороны Symfony2 / Doctrine2?
РЕДАКТИРОВАТЬ
В качестве дополнительного примечания я использую PostgreSQL в качестве БД, и у него есть несколько сквем, в этом случае я написал вид на nomencladores
схемы, но я попытался положить в public
схема и ничего не работает, видимо Doctrine не находит представление о схеме
Задача ещё не решена.
Других решений пока нет …