2017-10-26 15 views
0

product_importの値を挿入するには?Doctrineは2つの結合エンティティを挿入します

エンティティが

/** 
* 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; 


} 

エンティティ製品

/** 
* 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; 
    } 
} 

エンティティ製品輸入

/** 
* 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(); 
機能

メッセージエラー

SQLSTATE [23000]:整合性制約違反:1048 は

+1

エンティティの完全なコードにクラス名を指定してください。 – Mcsky

+0

完了です。より多くのコードが必要ですか? –

+0

ProdutosImportエンティティとは何ですか、このデータ配列を持つコンストラクタでは何をしますか? – Mcsky

答えて

0

Mcsky nullにすることはできません 'product_features_id' コラム、entitysハイドレーターがあり、この情報は、アップフィットし、私はなかったですそれはエラーのために重要ではないと思った。

public function __construct(array $data) 
    { 
     $hydrator = new ClassMethods(); 
     $hydrator->hydrate($data, $this); 
    } 
関連する問題