0
私はlaravelでdoctrineを使用しています。別のエンティティ(Product)にプロパティを作成するマップされたクラス(Item)がありますが、 Item内にはidを持つプロパティがありますが、 'NOT NULL'データベースエラーが発生します。Doctrineはセットアソシエーションなしで継承します
製品:
/**
* Product
*
* @ORM\Table(name="PRODUCT")
* @ORM\Entity
*/
class Product
{
/**
* @var integer
*
* @ORM\Column(name="CD_PRODUCT", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $cdProduct;
}
項目私のコントローラで
/**
* Item
*
* @ORM\Table(name="ITEM")
* @ORM\Entity
*/
class Item
{
/**
* @var integer
*
* @ORM\Column(name="CD_PRODUCT", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $cdProduct;
/**
* @var DcB2bMercadoria
*
* @ORM\ManyToOne(targetEntity="App\Models\Product")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="CD_PRODUCT", referencedColumnName="CD_PRODUCT")
* })
*/
private $product;
public function __construct($cdProduct)
{
$this->cdProduct = $cdProduct;
}
}
私はこれを行う:
$item = new Item(1);
$em->persist($item);
$em->flush();
は、しかし、これはNULLエラーが発生しません。
あなたは私を助けることができますか?
Tks!
PS:私はクラスをシミュレートします
私のdbはdbaによって管理されており、nullを持つフィールドを許可しないため、できません。とにかく、cdProductの値は設定されていましたが、DQLからSQLへの変換にはnull値があります。見てください: https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php#L671 私はこれを行います(もしわかっていればわかりませんが、私の問題を解決してください): 'if($ newValId){ $ result [$ owningTable] [$ sourceColumn] = $ newValId ? $ newValId [$ targetClass-> getFieldForColumn($ targetColumn)] :null; } ' –