在报价实体中返回空值的 ArrayCollections


ArrayCollections returning null in Quote Entity

我正在使用原则 2 从预先存在的数据库模式创建实体。我有一些关系,但是当我访问报价集合时,以下 ArrayCollections 返回空$screenprint $screenPrint

报价.php

<?php
namespace BlankStyle'Entity;
use Doctrine'ORM'Mapping as ORM;
use Doctrine'Common'Collections'ArrayCollection;
/**
 * Class Quote
 * @ORM'Entity
 * @ORM'Table(name="uc_decoration_quotes")
 */
class Quote
{
  /** @ORM'Id @ORM'GeneratedValue @ORM'Column(type="integer", name="quote_id") */
  private $id;
  /** @ORM'Column(type="integer", name="order_id") */
  private $order_id;
  /** @ORM'Column(type="integer", name="uid") */
  private $uid;
  /** @ORM'Column(type="integer", name="customer_name") */
  private $c_name;
  /** @ORM'Column(type="integer", name="customer_email") */
  private $c_email;
  /** @ORM'Column(type="integer", name="customer_phone") */
  private $c_phone;
  /** @ORM'Column(type="integer", name="title") */
  private $title;
  /** @ORM'Column(type="integer", name="need_date") */
  private $need_date;
  /** @ORM'Column(type="integer", name="ship_date") */
  private $ship_date;
  /** @ORM'Column(type="integer", name="delivery_date") */
  private $d_date;
  /** @ORM'Column(type="integer", name="price_tier") */
  private $price_tier;
  /** @ORM'Column(type="integer", name="print_vendor") */
  private $p_vendor;
  /** @ORM'Column(type="integer", name="status") */
  private $status;
  /** @ORM'Column(type="integer", name="created") */
  private $created;
  /** @ORM'Column(type="string", name="data") */
  private $data;
  /**
   * @var integer
   * @ORM'ManyToOne(targetEntity="User", inversedBy="quote")
   * @ORM'JoinColumn(name="uid", referencedColumnName="uid")
   */
  private $user;
  /**
   * @var ArrayCollection $screenPrint
   * @ORM'OneToMany(targetEntity="ScreenPrint", mappedBy="quote")
   */
  private $screenPrint;
  /**
   * @var ArrayCollection $screenPrint
   * @ORM'OneToMany(targetEntity="Sublimation", mappedBy="quote")
   */
  private $sublimation;
  public function __construct() {
    $this->screenPrint = new ArrayCollection();
    $this->sublimation = new ArrayCollection();
  }
}

升华.php

<?php
namespace Blankstyle'Entity;
use Doctrine'ORM'Mapping as ORM;
use Doctrine'Common'Collections'ArrayCollection;
/**
 * Sublimation
 * @ORM'Entity
 * @ORM'Table(name="uc_decoration_sublimation")
 */
class Sublimation
{
  /** @ORM'Id @ORM'GeneratedValue @ORM'Column(type="integer", name="sublimation_id") */
  private $sublimation_id;
  /** @ORM'Id @ORM'Column(type="integer", name="quote_id") */
  private $quote_id;
  /** @ORM'Column(type="string", name="description") */
  private $description;
  /** @ORM'Column(type="string", name="location") */
  private $location;
  /** @ORM'Column(type="integer", name="qty") */
  private $qty;
  /** @ORM'Column(type="integer", name="width") */
  private $width;
  /** @ORM'Column(type="integer", name="height") */
  private $height;
  /** @ORM'Column(type="float", name="cost") */
  private $cost;
  /** @ORM'Column(type="float", name="price") */
  private $price;
  /**
   * @var integer
   * @ORM'ManyToOne(targetEntity="Quote", inversedBy="sublimation")
   * @ORM'JoinColumn(name="quote_id", referencedColumnName="quote_id")
   */
  private $quote;
}

丝网印刷.php

<?php
namespace Blankstyle'Entity'Decoration;
use Doctrine'ORM'Mapping as ORM;
use Doctrine'Common'Collections'ArrayCollection;
/**
 * ScreenPrint
 * @ORM'Entity
 * @ORM'Table(name="uc_decoration_screenprint")
 */
class ScreenPrint
{
  /** @ORM'Id @ORM'GeneratedValue @ORM'Column(type="integer", name="loc_id") */
  private $loc_id;
  /** @ORM'Id @ORM'Column(type="integer", name="quote_id") */
  private $id;
  /** @ORM'Column(type="string", name="description") */
  private $description;
  /** @ORM'Column(type="string", name="location") */
  private $location;
  /** @ORM'Column(type="integer", name="qty") */
  private $qty;
  /** @ORM'Column(type="integer", name="color") */
  private $color;
  /** @ORM'Column(type="integer", name="width") */
  private $width;
  /** @ORM'Column(type="integer", name="height") */
  private $height;
  /** @ORM'Column(type="float", name="cost") */
  private $cost;
  /** @ORM'Column(type="float", name="price") */
  private $price;
  /**
   * @var integer
   * @ORM'ManyToOne(targetEntity="Quote", inversedBy="screenPrint")
   * @ORM'JoinColumn(name="id", referencedColumnName="quote_id")
   */
  private $quote;
}

uc_decoration_screenprint.sql

CREATE TABLE IF NOT EXISTS `uc_decoration_screenprint` (
  `loc_id` int(9) NOT NULL,
  `quote_id` int(9) NOT NULL,
  `location` varchar(120) NOT NULL,
  `description` varchar(120) NOT NULL,
  `colors` int(2) NOT NULL,
  `qty` int(3) NOT NULL,
  `ink_changes` int(3) NOT NULL,
  `print_cost` float(10,2) NOT NULL,
  `print_price` float(10,2) NOT NULL,
  `ink_cost` float(10,2) NOT NULL,
  `ink_price` float(10,2) NOT NULL,
  `setup_cost` float(10,2) NOT NULL,
  `setup_price` float(10,2) NOT NULL,
  `height` varchar(100) DEFAULT NULL,
  `width` varchar(100) DEFAULT NULL,
  `pantones` varchar(255) DEFAULT NULL,
  `under_base` smallint(1) DEFAULT NULL,
   PRIMARY KEY (loc_id, quote_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

uc_decoration_sublimation.sql同样的事情是后者具有主键约束

问题出在我的实体中的注释中,只需将 @ORM''Id 添加到要关联的键中。你不能有两个。

use Doctrine'ORM'Mapping as ORM;
use Doctrine'Common'Collections'ArrayCollection;
/**
 * ScreenPrint
 * @ORM'Entity
 * @ORM'Table(name="uc_decoration_screenprint")
 */
class ScreenPrint
{
  /** @ORM'GeneratedValue @ORM'Column(type="integer", name="loc_id") */
  private $loc_id;
  /** @ORM'Id @ORM'Column(type="integer", name="quote_id") */
  private $id;
  /** @ORM'Column(type="string", name="description") */
  private $description;
  /** @ORM'Column(type="string", name="location") */
  private $location;
  /** @ORM'Column(type="integer", name="qty") */
  private $qty;
  /** @ORM'Column(type="integer", name="color") */
  private $color;
  /** @ORM'Column(type="integer", name="width") */
  private $width;
  /** @ORM'Column(type="integer", name="height") */
  private $height;
  /** @ORM'Column(type="float", name="cost") */
  private $cost;
  /** @ORM'Column(type="float", name="price") */
  private $price;
  /**
   * @var integer
   * @ORM'ManyToOne(targetEntity="Quote", inversedBy="screenPrint")
   * @ORM'JoinColumn(name="id", referencedColumnName="quote_id")
   */
  private $quote;
}

是正确的。干杯。