<?php namespace Lc\ShopBundle\Model; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use FOS\UserBundle\Model\User as UserModelFOS; use Lc\ShopBundle\Context\MerchantInterface; /** * @ORM\MappedSuperclass() */ abstract class User extends UserModelFOS { /** * @ORM\Column(type="string", length=20, nullable=true) */ protected $phone; /** * @ORM\Column(type="string", length=64, nullable=true) */ protected $behaviorDisplayPrice; /** * @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\MerchantInterface") */ protected $merchant; /** * @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\CreditHistoryInterface", mappedBy="user", orphanRemoval=true) */ private $creditHistories; /** * @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\AddressInterface", mappedBy="user") */ private $addresses; /** * @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\OrderShopInterface", mappedBy="user") */ private $orders; public function __construct() { $this->creditHistories = new ArrayCollection(); $this->addresses = new ArrayCollection(); $this->orders = new ArrayCollection(); } public function getPhone(): ?string { return $this->phone; } public function setPhone(?string $phone): self { $this->phone = $phone; return $this; } public function getBehaviorDisplayPrice(): ?string { return $this->behaviorDisplayPrice; } public function setBehaviorDisplayPrice(?string $behaviorDisplayPrice): self { $this->behaviorDisplayPrice = $behaviorDisplayPrice; return $this; } public function getMerchant(): ?MerchantInterface { return $this->merchant; } public function setMerchant(?MerchantInterface $merchant): self { $this->merchant = $merchant; return $this; } /** * @return Collection|CreditHistory[] */ public function getCreditHistories(): Collection { return $this->creditHistories; } public function addCreditHistory(CreditHistory $creditHistory): self { if (!$this->creditHistories->contains($creditHistory)) { $this->creditHistories[] = $creditHistory; $creditHistory->setUser($this); } return $this; } public function removeCreditHistory(CreditHistory $creditHistory): self { if ($this->creditHistories->contains($creditHistory)) { $this->creditHistories->removeElement($creditHistory); // set the owning side to null (unless already changed) if ($creditHistory->getUser() === $this) { $creditHistory->setUser(null); } } return $this; } /** * @return Collection|Address[] */ public function getAddresses(): Collection { return $this->addresses; } public function addAddress(Address $address): self { if (!$this->addresses->contains($address)) { $this->addresses[] = $address; $address->setUser($this); } return $this; } public function removeAddress(Address $address): self { if ($this->addresses->contains($address)) { $this->addresses->removeElement($address); // set the owning side to null (unless already changed) if ($address->getUser() === $this) { $address->setUser(null); } } return $this; } /** * @return Collection|ShopOrder[] */ public function getOrders(): Collection { return $this->orders; } public function addOrder(OrderShop $order): self { if (!$this->orders->contains($order)) { $this->orders[] = $order; $order->setUser($this); } return $this; } public function removeOrder(OrderShop $order): self { if ($this->orders->contains($order)) { $this->orders->removeElement($order); // set the owning side to null (unless already changed) if ($order->getUser() === $this) { $order->setUser(null); } } return $this; } }