Ошибка проста - доктрина делает запрос:
SELECT t0.id AS id_1, t0.name AS name_2, t0.mentor_id AS mentor_id_3 FROM user t0
И получает ошибку:
[42703] ERROR: column t0.id does not exist
Если добавить неймспейс public:
SELECT t0.id AS id_1, t0.name AS name_2, t0.mentor_id AS mentor_id_3 FROM public.user t0
Все работает нормально.
Соответственно вопрос - где и как указать доктрине неймспейс?
doctrine.yaml
doctrine:
dbal:
driver: pdo_pgsql
url: '%env(resolve:DATABASE_URL)%'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
.env
DATABASE_URL=pgsql://myuser:mypass@localhost:5432/mydb
entity/User.php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\OneToOne;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @OneToOne(targetEntity="User")
* @JoinColumn(name="mentor_id", referencedColumnName="id", nullable=true)
*/
private $mentor;
//...
}