2017-10-26 1 views
0

Wie füge ich Product_import ein?Lehre einfügen zwei verbinden Einheit

Entity Eigenschaften

/** 
* Features 
* 
* @ORM\Table(name="features") 
* @ORM\Entity 
*/ 
class Features 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=45, nullable=false) 
    */ 
    private $name; 


} 

Entity Produkt

/** 
* Product 
* 
* @ORM\Table(name="product", indexes={@ORM\Index(name="fk_product_features1_idx", columns={"features_id"})}) 
* @ORM\Entity 
*/ 
class Product 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    */ 
    private $id; 

    /** 
    * @var \Features 
    * 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="NONE") 
    * @ORM\OneToOne(targetEntity="Features") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="features_id", referencedColumnName="id") 
    * }) 
    */ 
    private $features; 

    /** 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * @param integer $id 
    * 
    * @return self 
    */ 
    public function setId($id) 
    { 
     $this->id = $id; 

     return $this; 
    } 

    /** 
    * @return \Features 
    */ 
    public function getFeatures() 
    { 
     return $this->features; 
    } 

    /** 
    * @param \Features $features 
    * 
    * @return self 
    */ 
    public function setFeatures(\Features $features) 
    { 
     $this->features = $features; 

     return $this; 
    } 
} 

Entity Produkt Import

/** 
* ProductImport 
* 
* @ORM\Table(name="product_import", indexes={@ORM\Index(name="fk_product_import_product1_idx", columns={"product_id", "product_features_id"})}) 
* @ORM\Entity 
*/ 
class ProductImport 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var \Product 
    * 
    * @ORM\ManyToOne(targetEntity="Product") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="product_id", referencedColumnName="id"), 
    * @ORM\JoinColumn(name="product_features_id", referencedColumnName="features_id") 
    * }) 
    */ 
    private $product; 

    /** 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * @param integer $id 
    * 
    * @return self 
    */ 
    public function setId($id) 
    { 
     $this->id = $id; 

     return $this; 
    } 

    /** 
    * @return \Product 
    */ 
    public function getProduct() 
    { 
     return $this->product; 
    } 

    /** 
    * @param \Product $product 
    * 
    * @return self 
    */ 
    public function setProduct(\Product $product) 
    { 
     $this->product = $product; 

     return $this; 
    } 
} 

INSERT

$data['product'] = entityProduto; 
$data['product_features'] = 1; 
$entity = new ProdutosImport($data); 
$em->persist($entity); 
$em->flush(); 
Fehler

Nachricht

SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1048 Spalte 'product_features_id' nicht null sein kann

+1

Geben Sie den vollständigen Code Ihrer Entitäten mit Klassennamen bitte – Mcsky

+0

It's done. Brauchen Sie mehr Codes? –

+0

Was ist die ProdutosImport Entität, was machen Sie im Konstruktor mit diesem Datenarray? – Mcsky

Antwort

0

Mcsky, die Entitys Hydrator hat, hat diese Information nicht passt und ich dachte, es sei nicht wichtig für Fehler.

public function __construct(array $data) 
    { 
     $hydrator = new ClassMethods(); 
     $hydrator->hydrate($data, $this); 
    }