0

Typo3 または Flow3 の QueryInterface を使用する場合は、使用できるすべての関数についてQueryInterface Extbase ドキュメントを参照できます。Flow3 でいくつかの AND、OR、および LogicalNOT を作成しましたが、それらはうまく機能します。

私の問題は in() 関数です。「タスク」オブジェクトがあり、すべてのタスクに 1 つの「ステータス」オブジェクトがあるとします (多対 1)。ここで、「false」の「show」属性のステータスを持つすべてのタスクを作成したいと考えています。それがうまくいかないことです:

$query->in('status',$this->statusRepository->findByShow(FALSE));

find() の戻り値の型が原因だと思います。「NULL」、1 つのオブジェクト、または配列内の複数のオブジェクトを取得できます。しかし、なぜそれが機能しないのですか、どうすれば修正できますか?

手伝ってくれてありがとう。

4

3 に答える 3

0

findByShow を呼び出すと、QueryResult のオブジェクトが返されます。「in」メソッドの 2 番目のパラメーターは混合要素の配列である必要があります。

QueryResult の toArray() メソッドを使用して、オブジェクトをステータス モデルの配列に変換してみてください。

$this->statusRepository->findByShow(FALSE)->toArray();

お役に立てば幸いです!
オリビエ

于 2013-08-05T17:10:39.340 に答える
0

彼らがこれを修正したかどうかはわかりませんが、昨年、これを行う必要があることを知るために何時間も費やしたことを覚えています。

$statusIds = Array();
$status = $this->statusRepository->findByShow(FALSE);
foreach($status as $s) $statusIds[] = $status->getIdentifier();
$constraint = $query->in('status',$statusIds);
return $query->matching($constraint)->execute();

Status クラスは以下を実装する必要があります。

public getIdentifier(){ return $this->Persistence_Object_Identifier; }
于 2014-01-08T12:49:51.360 に答える