0

関連付けられたオブジェクトに対して Collection#Matching を使用したいのですが、うまくいきません。掘り下げてみると、Doctrine が 2 つの値に対して in_array 呼び出しを行っているように見えます。針は Persisted Collection (私の関連付け) で、干し草の山は一致させたいエンティティの配列です。針は永続コレクションであるため、一致は失敗します。

これはおそらくバグですか、それとも関連付けがサポートされていませんか? サポートされていない場合、回避策はありますか?

例:

$query = $em->createQuery("SELECT c FROM Entity\BidCategory c WHERE c.code IN(:categories)");
$query->setParameter('categories', array('CATEGORY_1', 'CATEGORY_2'));
$my_categories = $query->getResult();

$criteria = array(
"min_pub_date" => "01-07-2012",
"max_pub_date" => "01-08-2012"
);

$query = $em->createQuery("SELECT b From Entity\Bid b JOIN b.categories c WHERE b.pub_date > :min_pub_date AND b.pub_date < :max_pub_date");
$query->setParameter("min_pub_date", new DateTime($criteria['min_pub_date']));
$query->setParameter("max_pub_date", new DateTime($criteria['max_pub_date']));
$query->setMaxResults(1);
$bids = $query->getResult();

$criteria = Criteria::create()
->where(Criteria::expr()->in("categories", $my_categories));

$collection = new Doctrine\Common\Collections\ArrayCollection();
foreach($bids as $bid)
{
    $collection->add($bid);
}
$matched_bids = $collection->matching($criteria);
4

1 に答える 1

0

基準機能は関連付けをサポートしていません。Criteria::expr()->in()メソッドは通常の配列用です。

于 2013-12-24T00:20:39.017 に答える