Symfony2 Репозитории и пользовательские объединения - PullRequest
0 голосов
/ 11 марта 2012

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

БОЛЬШЕ ДЕТАЛЕЙ:

1-я таблица имеет идентификатор, имя пользователя

2-я таблица имеет user_id, stat1, stat2, stat3

я хочу найти всех пользователей в таблице 1, присоединившейся к таблице 2. Я могу сделать это с простым MySQL довольно легко, но я хочу знать, как это сделать способом symfony.

1 Ответ

1 голос
/ 11 марта 2012

Вы должны указать Doctrine, где найти каждый фрагмент информации, чтобы он мог загружать все свойства каждый раз, когда вы создаете новый объект User. Другими словами, вам нужно добавить пользовательскую информацию отображения Doctrine. Предполагая, что вы добавляете информацию сопоставления в виде встроенных аннотаций в класс модели вашего пользователя, код будет выглядеть примерно так:

//in User.php

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="first_table_name")
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string")
     */
    protected $username;

    /**
     * @ORM\OneToMany(targetEntity="UserStats")
     */
    protected $stats;

    //also define getters and setters for the above, of course
}



//in UserStats.php

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="table_two_name")
 */
class UserStats
{
     /** 
      * I'm pretty sure doctrine will require that you add an Id column to table_two, 
      * which is what this is. If you can't add an Id, I'm not sure it'll work...
      * @ORM\Id 
      * @ORM\Column(type="integer")
      * @ORM\GeneratedValue 
      */
     protected $id;

     /** 
      * @ORM\ManyToOne(targetEntity="User") 
      * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
      */
     protected $user;

     /** 
      * The below assumes your stats are strings. If not, change the type attribute.
      * @ORM\Column(type="string")
      */
     protected $stat1;

     /** 
      * @ORM\Column(type="string")
      */
     protected $stat2;

     /** 
      * @ORM\Column(type="string")
      */
     protected $stat3;

     //include appropriate getters/setters here too
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...