【问题标题】:Doctrine persist without set associations没有固定关联的教义持续存在
【发布时间】:2016-08-05 20:56:15
【问题描述】:

所以,我在 laravel 中使用了学说,并且我有一个映射类(Item),我为另一个实体(Product)创建了一个属性,但是当我坚持时,我不需要在 Item 中设置 Product,因为我有具有 de id 的属性,但会导致“NOT NULL”数据库错误。

产品:

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

但这会导致 NOT NULL 错误。

你们能帮帮我吗?

谢谢!

PS.:我模拟类

【问题讨论】:

    标签: doctrine-orm laravel-5


    【解决方案1】:

    您是如何生成 sql 架构的?

    如果您使用doctrine:schema:create,它应该在该列上输出不带not null 的sql。

    【讨论】:

    • 我不能,因为我的数据库是由 dba 管理的,他不允许字段为空。无论如何,正在设置 cdProduct 的值,但在 DQL 到 SQL 的转换中,它们具有空值。看:github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/…我这样做(如果可以,我不知道,但解决我的问题):if($newValId) { $result[$owningTable][$sourceColumn] = $newValId ? $newValId[$targetClass->getFieldForColumn($targetColumn)] : null; }
    猜你喜欢
    • 2019-03-06
    • 2017-04-12
    • 2023-04-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多