Возможно, вы хотите убедиться, что корзина не может делать ставки, если к ней не привязан пользователь.В отличие от полей, ассоциации обнуляются по умолчанию.Вы должны добавить аннотацию JoinColumn для этого.
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="cart")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
Другое дело, что, поскольку у вас есть двунаправленная ассоциация, вы должны убедиться, что при вызове $user->setCart($cart)
этотакже добавит пользователя в корзину, например, так:
public function setCart(Cart $cart): void
{
$this->cart = $cart;
$cart->setUser($this);
}
Поскольку корзина не может быть создана без пользователя, вы также можете вместо этого указать аргумент конструктора:
public function __construct(User $user)
{
$this->user = $user;
$user->setCart($this);
}
Таким образом, вы можете опустить метод setUser()
в корзине, гарантирующий, что никто не поменяет владельца корзины случайно.
С последним вам, возможно, даже не придется ссылаться на пользователя, так кактележка является владельцем, но для обеспечения согласованного состояния обоих объектов я всегда буду делать это, когда у вас двунаправленная связь.