2017-05-19 5 views
0

이것은 참조하려는 관련 객체가 있지만 인스턴스화되지 않은 기본 객체입니다. 내가 뭘 잘못하고 있는지 모르겠다.Symfony3 - Doctrine 관련 객체가 채워지지 않음

나는 개체 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: "[email protected]; [email protected]" 
    -securityAgreement: true 
    -securityAgreementDate: DateTime {#114 ▶} 
    -insuranceCert: true 
    -insuranceCertDate: null 
    -marketId: 1 
    } 

시장 클래스가 존재하고 설정 역이 있습니다

<?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를 처음 사용했습니다.

답변

0

Vendormarket_id 열이 중복되었습니다. 실제로 $marketId 필드가 필요하지 않습니다.

$marketId을 제거하고 $market 만 유지하십시오.

당신이 시장 ID에 액세스하려는 경우, 당신은 같은 것을 수행 할 수 있습니다 때문에 내가 엔티티를 생성하는 방법에

$vendor->getMarket()->getId(); 
0

여기, 내가 찾은 솔루션의 특정 사례처럼 보인다합니다. http://symfony.com/doc/current/doctrine/reverse_engineering.html

필요한 주석의 일부가 자동으로 Market.php에 추가되지 않은 것처럼이 제대로 협회의 실체를 설정하지 않음을 밝혀 :

나는 나의 실체를 만들려면 여기를 리버스 엔지니어링 방법을 사용 수업.

* @ORM\Table(name="market")** 

을 그리고 기본 키 지정 :

/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

그리고가 작성되고있는 공급 업체에 관련된 이제 시장 객체를

나는 추가했다.