Доктрина Symfony: записи добавлены в таблицу неожиданно - PullRequest
0 голосов
/ 27 июня 2018

В моем коде Symfony я использовал Doctrine. В объекте (AppBundle \ Entity \ Core \ User) я определил столбец foodTypes , который связан с другим объектом (AppBundle \ Entity \ FoodRecording \ FoodType). Я определил отношение «многие ко многим» между Пользователь и FoodType , со связующей таблицей foodrecording_user , объединяющей User.username и FoodType.foodtype_code . Код показан ниже.

// Entity\Core\User
namespace AppBundle\Entity\Core;
......
class User implements AdvancedUserInterface, \Serializable {
......
/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\FoodRecording\FoodType")
 * @ORM\JoinTable(name="foodrecording_user",
 *      joinColumns={@ORM\JoinColumn(name="username", referencedColumnName="username", onDelete="CASCADE")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="foodtype_code", referencedColumnName="code", onDelete="CASCADE")}
 *      )
 */
private $foodTypes;

Как и ожидалось, я могу достать типы еды определенного пользователя, и все кажется хорошим, пока я иногда не узнаю, что ...

каждый раз, когда я запускаю приложение, создается впечатление, что программа неожиданно добавляет новые записи в таблицу foodrecording_user , например, если исходное содержимое в этой таблице:

username    foodtype_code
30001180    1020
30001180    1660
30001180    320
30001270    1660
30001270    580

Затем, после запуска приложения с пользователем с именем 30001180, содержимое будет выглядеть примерно так:

username    foodtype_code
30001180    1020
30001180    1660
30001180    320
30001270    1660
30001270    580
112         1020
112         1660
112         320

Здесь 112 - это идентификатор (первичный ключ) пользователя (с именем пользователя 30001180). Это означает, что программа, кажется, дублирует записи пользователя, просто заменяя имя пользователя (30001180) идентификатором (112).

Я уверен, что я не писал никакого кода для дублирования записей в базе данных - я только что прочитал их ( Выбрать ) без каких-либо операций записи, таких как Вставить или Обновить .

Может кто-нибудь сказать мне, почему это произошло? Я так растерялся!

Большое спасибо.

...