РЕДАКТИРОВАТЬ:
Да, я знаю об ответе Doctrine2 - "класс" не является допустимым объектом или сопоставленным суперклассом , но он использует устаревшие методы, я использую Doctrine 2.6.2
Я всегда получаю эту ошибку
Doctrine \ ORM \ Mapping \ MappingException: класс "Osoba" не является допустимым объектом или сопоставленным суперклассом
Я думаю, что проблема в переменной $paths
, но я не знаю, какое значение я должен использовать.Вот файл конфигурации и тестовый файл
<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
require_once "vendor/autoload.php";
// database configuration parameters
$dbParams = array(
'dbname' => 'xxx',
'user' => 'xxx',
'password' => 'xxx',
'host' => 'xxx',
'driver' => 'pdo_mysql',
'port' => '3312'
);
$paths = array("app/models/DAO");
$isDevMode = false;
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
Тестовый файл
require_once $_SERVER['DOCUMENT_ROOT'] . "/bootstrap.php";
require_once $_SERVER['DOCUMENT_ROOT'] . '/app/models/DAO/Osoba.php';
error_reporting(E_ALL ^ E_NOTICE);
$osoba = new Osoba();
$osoba->setMeno("Martin");
$entityManager->persist($osoba);
$entityManager->flush();
это сопоставленный класс, фактически только его часть, но его должно быть достаточно
use \Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="osoba")
*/
class Osoba
{
/**
* @ORM\Column(type="string")
*/
private $meno;
public function getMeno()
{
return $this->meno;
}
public function setMeno($meno)
{
$this->meno = $meno;
}
/**
* @ORM\Id
* @ORM\Column(type="integer", name="id", nullable="false")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
И, наконец, структура моего проекта
Любая помощь приветствуется.Я проверил соединение с базой данных, и все в порядке, но отображение, кажется, неверно, но я действительно не знаю, почему