【发布时间】:2017-05-19 02:24:40
【问题描述】:
这是一个基本问题,我有一个想要引用的关联对象,但它没有被实例化。不知道我做错了什么。
我有对象 MARKET 和 VENDOR 一对多关联。市场有很多供应商,供应商只有一个市场。我希望在加载供应商时获取市场对象。
class Vendor
{
/**
* @ORM\ManyToOne(targetEntity="Expedient\PurchaseBundle\Entity\Market", inversedBy="vendors")
* @ORM\JoinColumn(name="market_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
private $market;
/**
* @var int
*
* @ORM\Column(name="market_id", type="integer", nullable=true)
*/
private $marketId;
...
/**
* Set market
*
* @param \Expedient\PurchaseBundle\Entity\Market $market
*
* @return Market
*/
public function setMarket(\Expedient\PurchaseBundle\Entity\Market $market = null)
{
$this->market = $market;
return $this;
}
/**
* Get market
*
* @return \Expedient\PurchaseBundle\Entity\Market
*/
public function getMarket()
{
return $this->market;
}
当我找到 Vendor 对象时,我看到没有市场集。注意有一个marketId,但不包括市场对象。
"vendor" => Vendor {#117 ▼
-market: null
-id: "11"
-name: "A-Air Company"
-account: ""
-attn: "Rege Dumm / John Matthews"
-address1: "206 Overlook Drive"
-address2: ""
-city: "Sewickley"
-state: "PA"
-zip: "15143"
-country: "USA"
-phone: "412-741-9420"
-cellPhone: null
-fax: "412-749-8590"
-tag: "A-Air Company"
-active: true
-email: "rdumm@a-air.net; jmatthews@a-air.net"
-securityAgreement: true
-securityAgreementDate: DateTime {#114 ▶}
-insuranceCert: true
-insuranceCertDate: null
-marketId: 1
}
Market 类存在并且有相反的设置:
<?php
namespace Expedient\PurchaseBundle\Entity;
/**
* Market
*/
class Market
{
/**
* @var integer
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="Vendor", mappedBy="market")
*/
protected $vendors;
public function __construct()
{
$this->vendors = new ArrayCollection();
}
}
不确定我可能在哪里出错。我是 Symfony 3 的新手。
【问题讨论】:
标签: symfony doctrine symfony-3.2