Hello.
My problem is the strange behaviour of Doctrine. If i use the facade EntityManager in
$dql = "SELECT h.houseID, h.areaID,
h.name, h.address,
h.beds, h.baths,
h.sqft, h.year,
h.rent, h.price
FROM " . App\Model\EnumEntities::ENT_HOUSE . " h";
$res = EntityManager::createQuery($dql)->getResult();
return json_encode(array('data' => $res));
i get the exception:
InvalidFieldNameException in AbstractMySQLDriver.php line 71:
An exception occurred while executing 'SELECT m0_.house_i_d AS house_i_d_0, m0_.area_i_d AS area_i_d_1, m0_.name AS name_2, m0_.address AS address_3, m0_.beds AS beds_4, m0_.baths AS baths_5, m0_.sqft AS sqft_6, m0_.year AS year_7, m0_.rent AS rent_8, m0_.price AS price_9 FROM mx_houses m0_':
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'm0_.house_i_d' in 'field list'
Doctrine uses wrong names of columns with "ID". However, if i set up EntityManager myself, it will work properly
$dbParams = array(
'driver' => DBManager::DRIVER,
'host' => DBManager::HOST,
'user' => DBManager::USER,
'password' => DBManager::PASSWORD,
'dbname' => DBManager::DBNAME,
);
$this->config = Setup::createAnnotationMetadataConfiguration(array(base_path("app/Model")), true);
$this->entityManager = EntityManager::create($dbParams, $this->config);
Here is doctrine default manager basic config
'managers' => [
'default' => [
'dev' => env('APP_DEBUG', false),
'meta' => env('DOCTRINE_METADATA', 'annotations'),
'connection' => env('DB_CONNECTION', 'mysql'),
'namespaces' => [
'App/Model'
],
'paths' => [
base_path("app/Model")
],
'repository' => Doctrine\ORM\EntityRepository::class,
'proxies' => [
'namespace' => false,
'path' => storage_path('proxies'),
'auto_generate' => env('DOCTRINE_PROXY_AUTOGENERATE', false)
],
],
and entity
namespace App\Model;
use Doctrine\ORM\Mapping\Column,
Doctrine\ORM\Mapping\Id,
Doctrine\ORM\Mapping\Entity,
Doctrine\ORM\Mapping\Table,
Doctrine\ORM\Mapping\GeneratedValue,
Doctrine\ORM\Mapping\JoinColumn,
Doctrine\ORM\Mapping\OneToOne;
/**
* @Entity
* @Table(name="mx_houses")
**/
class House
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
* @var int
**/
protected $houseID;
/**
* @Column(type="integer")
* @var int
**/
protected $areaID;
/**
* @Column(type="string", length=100)
* @var string
**/
protected $name;
/**
* @Column(type="string", length=255)
* @var string
**/
protected $address;
/**
* @Column(type="string", length=5)
* @var string
**/
protected $beds;
/**
* @Column(type="string", length=5)
* @var string
**/
protected $baths;
/**
* @Column(type="smallint")
* @var int
**/
protected $sqft;
/**
* @Column(columnDefinition="YEAR", nullable=false)
* @var string
**/
protected $year;
/**
* @Column(type="smallint")
* @var int
**/
protected $rent;
/**
* @Column(type="integer")
* @var int
**/
protected $price;