<?php
/**
* Base Product
*
* @author Vincent van Waasbergen <v.vanwaasbergen@visualmedia.nl>
*/
namespace VisualMedia\ProductBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use VisualMedia\LisaBundle\Component\Interfaces\EntityInterface;
use VisualMedia\LisaBundle\Traits\BlameableTrait;
use VisualMedia\LisaBundle\Traits\AutoIdTrait;
use VisualMedia\LisaBundle\Traits\TimestampableTrait;
use VisualMedia\ProductBundle\Model\BaseProductModel;
use VisualMedia\OrderingBundle\Traits\OrderingTrait;
/**
* Base Product
*
* @ORM\Entity(repositoryClass="VisualMedia\ProductBundle\Manager\BaseProductManager")
* @ORM\Table(name="product")
*
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discriminator", type="string")
*/
class BaseProduct extends BaseProductModel implements EntityInterface
{
use BlameableTrait;
use AutoIdTrait;
use OrderingTrait;
use TimestampableTrait;
/**
* Channels
*
* @ORM\ManyToMany(targetEntity="VisualMedia\TranslationBundle\Entity\BaseChannel")
* @ORM\JoinTable(name="product_channel",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="channel_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
public $channels;
/**
* Translatable
*/
public $title;
public $browserTitle;
public $slug;
public $metaDescription;
public $metaKeywords;
public $htmlContent;
/**
* @ORM\Column(name="product_code", type="string", length=16, nullable=true)
*/
public $productCode;
/**
* @ORM\Column(name="price", type="decimal", scale=2, nullable=true)
*/
public $price;
/**
* @ORM\Column(name="previous_price", type="decimal", scale=2, nullable=true)
*/
public $previousPrice;
/**
* @ORM\Column(name="published", type="boolean", nullable=false)
*/
public $published = true;
/**
* @ORM\Column(name="indexable", type="boolean", nullable=false)
*/
public $indexable = true;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\ProductBundle\Entity\BaseProductCategoryLink", cascade={"persist", "remove"}, mappedBy="product", orphanRemoval=true)
*/
public $categories;
/**
* @ORM\ManyToOne(targetEntity="VisualMedia\ProductBundle\Entity\BaseAttributeSet", cascade={"persist"}, inversedBy="products")
* @ORM\JoinColumn(name="attribute_set_id", referencedColumnName="id", onDelete="SET NULL")
*/
public $attributeSet;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\ProductBundle\Entity\BaseAttributeContent", mappedBy="product", cascade={"persist", "remove"}, orphanRemoval=true)
* @ORM\OrderBy({"id"="ASC"})
*/
public $attributes;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\ProductBundle\Entity\BaseProductPhoto", mappedBy="product", cascade={"persist", "remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering"="ASC"})
*/
public $photos;
/**
* @ORM\ManyToOne(targetEntity="VisualMedia\ProductBundle\Entity\BaseProduct", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
*/
public $parent;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\ProductBundle\Entity\BaseProduct", mappedBy="parent", cascade={"persist"})
* @ORM\OrderBy({"ordering"="ASC"})
*/
public $children;
/**
* @ORM\OneToMany(targetEntity="VisualMedia\ProductBundle\Entity\BaseProductContent", mappedBy="product", cascade={"persist", "remove"}, orphanRemoval=true)
*/
public $contents;
}