У меня есть объект Customer
и User
объект с таблицей отношений JOIN customers_users
.Doctrine ManyToOne with join table - filter results
В объекте 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;
Я хочу, чтобы при создании клиента я могу назначить пользователей и фактически он работает хорошо, но я хочу фильтровать пользователей, чтобы показать только те, которые не назначены ни один клиент.
Например, у меня есть два клиента и два пользователя, и первый клиент назначил двух пользователей; Затем, когда я редактирую второй клиент, два пользователя, по всей видимости, возложенные на него, но когда я выбираю их и я отправить форму, он выдает следующее исключение:
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.