1

JOIN 関係テーブルを持つエンティティCustomerとエンティティがあります。Usercustomers_users

Customerエンティティにはこれがあります。

/**
 * @var User
 * 
 * @ORM\ManyToMany(targetEntity="Entity\User")
 * @ORM\JoinTable(name="customers_users",
 *     joinColumns={@ORM\JoinColumn(name="customer_id", referencedColumnName="id")},
 *     inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", unique=true)}
 * )
 * 
 */
private $users;

顧客が作成されたときにユーザーを割り当てることができ、実際にはうまく機能するようにしたいのですが、ユーザーをフィルターして、顧客に割り当てられていないユーザーのみを表示したいと考えています。

たとえば、2 人の顧客と 2 人のユーザーがいて、最初の顧客が 2 人のユーザーを割り当てたとします。次に、2 番目の顧客を編集すると、2 人のユーザーが割り当てられているように見えますが、これらを選択してフォームを送信すると、次の例外がスローされます。

An exception occurred while executing 'INSERT INTO customers_users (customer_id, user_id) VALUES (?, ?)' with params [2, 1]:

SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "uniq_2763c6cca76ed395"
DETAIL: Key (user_id)=(1) already exists.
4

2 に答える 2