Ошибка: неопределенная таблица при попытке доступа к PostgreSQL с помощью Doctrine2

Я хочу получить доступ к базе данных PostgreSQL с помощью Doctrine 2 в приложении Zend 2, но получаю ошибку, что таблица, к которой я хочу получить доступ, не определена.

Тот же доступ к базе данных MySQL работает нормально.

Моя конфигурация Доктрины (local.php):

return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
// MySQL - Config
//                 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
//                 'params' => array(
//                     'host'     => '192.168.1.100',
//                     'port'     => '3306',
//                     'user'     => 'user',
//                     'password' => 'password',
//                     'dbname'   => 'mydb',
//                     'charset'  => 'utf8',
//                 ),
// PostgreSQL
'driverClass' => 'Doctrine\DBAL\Driver\PDOPgSql\Driver',
'params' => array(
'host'     => '192.168.1.100',
'port'     => '5432',
'user'     => 'user',
'password' => 'password',
'dbname'   => 'mydb',
'charset'  => 'utf8',
),
),
),
),
);

Мой контроллер пытается отобразить сущность «Лошадь»:

class HorsesController extends AbstractActionController
{

/**
* @var Doctrine\ORM\EntityManager
*/
protected $em;

public function getEntityManager()
{
if (null === $this->em) {
$this->em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
}
return $this->em;
}

/**
* The default action - show the home page
*/
public function indexAction()
{
$id = (int)$this->getEvent()->getRouteMatch()->getParam('id');
$horse = $this->getEntityManager()->find('Doctrine2mapper\Entity\Horse', $id);
return new ViewModel(array(
'horse' => $horse,
));
}
}

Лошадь сущности — это:

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;

use Zend\Form\Annotation; // !!!! Absolutely neccessary

use Zend\Db\Sql\Ddl\Column\BigInteger;

/**
* Horses
*
* @ORM\Table(name="Horse")
* @ORM\Entity(repositoryClass="Doctrine2mapper\Entity\Repository\HorseRepository")
* @Annotation\Name("Horse")
* @Annotation\Hydrator("Zend\Stdlib\Hydrator\ClassMethods")
*/
class Horse
{

/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @Annotation\Exclude()
*/
private $id;

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
.
.
.
(many attributes, getter and setter)

При попытке получить доступ к PostgreSQL я получаю эту ошибку:

An exception occurred while executing 'SELECT t0.id AS id1, ...
FROM Horse t0 WHERE t0.id = ?' with params [1]:

SQLSTATE[42P01]: Undefined table: 7 ERROR:  relation "horse" does not exist
LINE 1: ...ated AS created29, t0.modified AS modified30 FROM Horse t0 W...

У меня есть база данных PostgreSQL «mydb» со схемой «public» и таблицей «Horse»

-- Table: "Horse"
CREATE TABLE "Horse"(
id serial NOT NULL,
.
.
.
);

существует и может быть доступен с помощью pgAdminIII.

Любая помощь приветствуется!

С наилучшими пожеланиями
rholtermann

1

Решение

Нашел ответ, теперь работает.

Мне просто нужно было добавить схему и немного ее избежать:

В моей лошадиной сущности:

@ORM\Table("Horse")

пришлось заменить на:

@ORM\Table(name="""public"".""Horse""")

Я получил подсказку от Вот

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector