2017-11-20 19 views
1

를 확인할 수 없습니다 만, 모두가 좋아 보이지만 작동하지 않습니다 ..내가 내 제품 기업 내 제공 엔티티 간의 조인을 달성하고자하는 열의 유형 심포니

내 실수 : 컬럼의 유형을 확인할 수 없습니다 "ID"클래스의 "AppBundle \ 법인 \ 콜럼버스 \ 제공자"

여기에 제품 엔티티의 매핑이 "AppBundle \ 법인 \ 콜럼버스 \ 제공자"클래스의 열 "ID"의 유형을 확인할 수 없습니다 :

<?php 

namespace AppBundle\Entity\Colombus; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Product 
* 
* @ORM\Table(name="product") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository") 
*/ 
class Product 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="reference_produit", type="integer") 
* @ORM\Id 
*/ 
private $id; 

/** 
* @var string 
* 
* @ORM\ManyToOne(targetEntity="Provider") 
* @ORM\JoinColumn(name="code_fournisseur_principal", referencedColumnName="id") 
*/ 
private $provider; 

공급자 엔터티의 매핑 : 예 비용 당신이 다른 속성 :

<?php 

namespace AppBundle\Entity\Colombus; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Provider 
* 
* @ORM\Table(name="provider") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProviderRepository") 
*/ 
class Provider 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="code_fournisseur", type="string") 
* @ORM\Id 
*/ 
private $id; 

컨트롤러 :

/** 
* 
* @Route("/{_locale}/build_order/step1/2", name="order.build") 
* @return Response 
*/ 
public function buildOrderAction(SessionInterface $session){ 
    $em = $this->getManager($session->get('em')); 

    $products = $em->getRepository('AppBundle\Entity\Colombus\Product')->findAll(); 

    return $this->render('AppBundle::creation/create_order.html.twig',[ 
     'products' => $products 
    ]); 
} 

너무 당신을 도울 수있는 경우 : 당신은 수정해야

public function getManager($dbname){ 
$paths = array(__DIR__ . '/AppBundle/Entity/Colombus'); 
$isDevMode = false; 

$conn = array(
    'dbname' => $dbname, 
    'user' => 'root', 
    'password' => '', 
    'host' => '127.0.0.1', 
    'driver' => 'pdo_mysql', 
    'charset' => 'utf8', 
); 

$config = Setup::createConfiguration($isDevMode); 
$driver = new AnnotationDriver(new AnnotationReader(), $paths); 

AnnotationRegistry::registerLoader('class_exists'); 
$config->setMetadataDriverImpl($driver); 

$em = EntityManager::create($conn, $config); 

return $em; 
} 
+0

제공자 : ID가 '가 당신의 매핑과 관련된 다른 오류를 제공 할 수 있습니다 auto 또는 기본 키에 설정되지 않은 부분 참여에 대한 의식입니다 @ var int '주석이 있지만'type = string '? 어쩌면 문제는 아니지만 다소 혼란 스럽습니다. –

답변

1

당신의 referencedColumnNameProduct 기업

/** 
* @var string 
* 
* @ORM\ManyToOne(targetEntity="Provider") 
* @ORM\JoinColumn(name="code_fournisseur_principal", referencedColumnName="code_fournisseur") 
*/ 
private $provider; 
같은

는하지만 난 당신이 Provider의 문자열 유형 열 code_fournisseur 연관하려고하고 당신에게