Я хочу получить доступ к базе данных PostgreSQL с помощью Doctrine 2 в приложении Zend 2, но я получаю сообщение об ошибке, что таблица, которую я хочу получить, не определена.Ошибка: неопределенная таблица при попытке доступа к PostgreSQL с Doctrine2
Тот же доступ к базе данных 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',
),
),
),
),
);
Мой контроллер пытается отобразить Entity "Лошадь":
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,
));
}
}
Платформа Entity Лошадь:
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 Database «MYDB» со схемой «публичного» и таблицы «Лошадь»
-- Table: "Horse"
CREATE TABLE "Horse"
(
id serial NOT NULL,
.
.
.
);
существует и могут быть доступны с помощью pgAdminIII.
Любая помощь приветствуется!
С наилучшими пожеланиями rholtermann