Тема: Как в БД при добавлении элемента добавить id залогиненого пользователя

Доброе время суток. Я новичек и возникла проблема. Установил symfony 2.7+adminbandle+fos_user_bundle и не могу сделать так чтобы при добавлении записи 2 БД статьи добавлялся так же id залогиненого пользователя. Как можно в классе описании сущности обратиться к информации о пользователе? Или может нужно каким то другим механизмом воспользоваться? Наведите на путь истинный как правильней это сделать

    public function __construct()
    {
        //$this->tags     = new \Doctrine\Common\Collections\ArrayCollection();
        //$this->comments = new \Doctrine\Common\Collections\ArrayCollection();
        //$User = $this;
        $user = $this->container->get('fos_user.user_manager');
        //$user = $this->get('security.context')->getToken()->getUser();
        //$user = $this->getUser();
        dump($user);die;
        $this->user_id_created = 1;
       
    }

2

Re: Как в БД при добавлении элемента добавить id залогиненого пользователя

1. читаете полностью The Symfony book пробуя и разбираясь со всеми примерами.
2. возвращаетесь к статье Databases and Doctrine , перечитываете.
3. с помощью данной статьи, а также дополнительной документации создаете связь OneToMany между пользователем и своей сущностью.
4. "добавляете" id пользователя при сохранении  чем-то вроде

$tag->setUser($user);

PS: Ну или можно конечно ничего не читать, не устанавливать связи, а просто создать поле $user и запихивать туда $user->getId(). Это по желанию.

3

Re: Как в БД при добавлении элемента добавить id залогиненого пользователя

Если вы в сонате работаете - то в админ классе нужно в методах prePersist, preUpdate сеттить пользователя

4

Re: Как в БД при добавлении элемента добавить id залогиненого пользователя

Hill, Я наверное не совсем понятно выразился, я знаю как добавить связь и какие они бывают, у меня не получается получить от security id текущего пользователя что бы добавить его таблицу. У меня получается достучаться до id залогиненного пользователя из контроллера, но когда заходит дело до описания схемы в Entity папке. Вот тут начинаются проблемы. Подозреваю что нужно просто что то волшебное прописать в use чтобы получить объект залогиненного пользователя в конструкторе или prepersist'е, но что именно надо прописать мне пока не удалось разгадать. Или может где то что то в конфиге надо поправить непонятно, продолжаю штудировать доки дальше...

5

Re: Как в БД при добавлении элемента добавить id залогиненого пользователя

subscribe2k пишет:

Подозреваю что нужно просто что то волшебное прописать в use чтобы получить объект залогиненного пользователя в конструкторе или prepersist'е

Сущность ничего не должна знать про залогиненного пользователя и про то, что он вообще есть в природе, это вообще не ее собачье дело. Соответственно, никаких штатных механизмов засунуть пользователя в энтити мимо сеттера не существует.
Вы в контроллере получаете текущего юзера? Вот и прекрасно. Просто добавьте его прямо там в нужную сущность через какой-нибудь заранее описанный в ней setUser(), сразу после ее создания. И будет вам счастье.

6

Re: Как в БД при добавлении элемента добавить id залогиненого пользователя

relo_san пишет:

Сущность ничего не должна знать про залогиненного пользователя и про то, что он вообще есть в природе, это вообще не ее собачье дело. Соответственно, никаких штатных механизмов засунуть пользователя в энтити мимо сеттера не существует.
Вы в контроллере получаете текущего юзера? Вот и прекрасно. Просто добавьте его прямо там в нужную сущность через какой-нибудь заранее описанный в ней setUser(), сразу после ее создания. И будет вам счастье.

Спасибо за исчерпывающий ответ. Именно это я и хотел в принципи услышать. Буду через контроллер добавлять.