2016-08-12 7 views
0

は、どのように私は、外部キーSymfony2の受け渡しパラメータは常にnull

Class Product{ 

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

/** 
* @var Group 
* 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Group") 
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", onDelete="CASCADE") 
*/ 
private $group; 

/** 
* @var string 
* 
* @ORM\Column(name="alt_number", type="string", length=255) 
*/ 
private $altproducts; 

/** 
* @var string 
* 
* @ORM\Column(name="product", type="string", length=255) 
*/ 
private $product; 
} 

ProductRepoにパラメータを渡すことができます。サービスで

public function GetProducts($product, Group $group){ 
     $results = $this->createQueryBuilder('p') 
     ->where('p.product= :product') 
     ->andwhere('p.group= :group') 
     ->setParameter('product',$product) 
     ->setParameter('group',$group) 
     ->getQuery()->getResult(); 
     return $results; 
} 

// Param $group is an Object of Group Class 
$ProductList= $this->entityManager->getRepository(Product::class)->GetProducts($product,$group); 

は常に空の;

私は->getSQL()を行うと、私は右のSQL構文SELECT i0_.id AS id_0, i0_.product AS product,i0_.description AS description_2, i0_.group_id AS group_id_3, i0_.altproducts AS altproducts_4, FROM Product i0_ WHERE i0_.product = ? AND i0_.group_id = ?

を持っている私は、製品番号とグループIDに基づいてaltProductsの配列を取得する必要があります。

私は何をしていますか?

+0

あなたのクエリが返すように期待していますか?特定の製品とグループエンティティをパラメータとして渡す場合、リストを返しません。データベースに一致する製品行がある場合(つまり、特定の製品とグループエンティティを参照している場合)、単一の結果を返します。グループ行)... – ejuhjav

+0

私はまだあなたの目標をまだ理解していません。製品とグループのエンティティでクエリを実行している場合、結果として(配列で)0または1の製品エンティティを取得します。 1つのaltProducts値を持つことになります。これがあなたの後であれば、あなたのクエリはうまくいくように思えるでしょう - プロファイラから実行可能なクエリをチェックし、その製品とグループの行(+リファレンス)がデータベースに存在するかどうかを調べることができます。 – ejuhjav

+0

ああ、最後のコメントをスクラップする - あなたのプロダクトエンティティとエンティティのプロダクト変数を混在させました。プロファイラの部分がまだ有効であることを確認してください:) – ejuhjav

答えて

0

あなたが特定のグループのすべての製品を取得しようとしている場合は、パラメータとして特定の製品のエンティティを渡すべきではありません。

public function GetProducts(Group $group) 
{ 
     $results = $this->createQueryBuilder('p') 
     ->where('p.group= :group') 
     ->setParameter('group',$group) 
     ->getQuery()->getResult(); 

     return $results; 
} 
+0

完成したエンティティを追加しました。グループIDを持つ製品のaltproductsを取得する必要があります –

関連する問題