プラグイン内で単一のランダムな関連エントリを取得する

各行にテキストフィールドと複数の関係フィールドを含む行列が与えられているとします。そして、私はテキストフィールドの値に基づいて1つの行列行を選んでいます。その行の1つのランダムな関連エントリを選択するにはどうすればよいですか?

私はこれをいくつかの方法でしようとしましたが、私は実際にどこにもいません。

行列の行を選択して、関連するエントリを取得しています

$matrixRow = $entry->matrixField->textField($stringToMatch)->first();

$relatedEntries = $matrixRow->relationshipField;

しかし、どのようにしてこれらの関連エントリの1つをランダムに選ぶことができますか?
配列を作成してシャッフルする唯一の方法はありますか? または、行列行を取得するときに私がそれを行う方法はありますか?

Matrix行に関連するすべての関連エントリを取得しようとして、次の行を追加しようとしました。私はこのクエリを修正して、制限を加え、無作為に注文して私の1関連エントリを取得することができます。しかし、それは空に戻ってくる。

$criteria = craft()->elements->getCriteria(ElementType::Entry);
$criteria->section         = 'videos';
$criteria->relatedTo       = array(
    'targetElement'   => $matrixRow,
    'field'     => 'relationshipField'
);

$entries = $criteria->find();

foreach($entries as $entry){
    var_dump($entry->title);
}
ベストアンサー

$matrixRow->relationshipField returns an
ElementCriteriaModel pre-configured to query for the related
elements. You can add/override additional criteria and then query
for a matching element using the first() method.

$randomEntry = $matrixRow->relationshipField->order('RAND()')->first();

これは基本的にカスタムElementCriteriaModelで試したものと同じです。フィールドを保持するエントリがリレーションの「sourceElement」であるため、
relatedTo パラメータで間違いを修正すると、これも機能するはずです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です