TL; DR:getQuerySettings() - > setEnableFieldsToBeIgnored()を使用して、「ベース」テーブルの代わりにリレーションを処理するにはどうすればよいですか? array( 'fe_users.disable')を使用しても動作しません。TYPO3 Extbase:setEnableFieldsToBeIgnoredを使用するクエリービルダー
「公園」と呼ばれる「リーダー」、「管理者」、「パートナー」の3つのフィールドを持つDBモデルがあります。 allは、fe_user表のオプションの結合です。
ここで、特定のfe_userがリーダー、管理者またはパートナーのいずれかであるパークを取得するリポジトリメソッドを作成します。これは、次のように動作します。
$query = $this->createQuery();
$where[] = $query->equals('parkusersLeader.uid', $userUid);
$where[] = $query->equals('parkusersAdministrators.uid', $userUid);
$where[] = $query->equals('parkusersPartner.uid', $userUid);
$query->matching($query->logicalOr($where));
これは実際には、SQL JOINクエリを作成し、「fe_users」テーブルにMM-各テーブルのために作られているが、WHERE文が表結合fe_usersごとに有効になっていますそれに「fe_users.disable = 0」を追加します。したがって、どのパークにも複数のユーザが割り当てられ、そこに割り当てられたユーザの1人が無効になると、クエリ全体が失敗し、パークが返されません。
したがって、setEnableFieldsToBeIgnored()メソッドを使用してextbaseにfe_user joinの "disable"句をこの場所に追加しないようにするにはどうすればよいですか?私は試しました:
$query->getQuerySettings()->setEnableFieldsToBeIgnored(array('parkusersLeader.disable', 'parkusersLeader.disabled', 'fe_users.disabled', 'fe_users.disable', 'disabled', 'starttime'));
これらのどれもSQLクエリを変更していないようです。