後でジョブタイプノードに必須フィールドを追加しました。そのため、既存のノードにはその特定のフィールド値はありません。このようなフィールド値をすべて含めたいと思います。しかし、どうすればよいですか?
これはクエリのサンプルです:
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', array('central_government_vacancy','psu_vacancy','state_government_vacancy'))
->propertyCondition('status', 1)
-> fieldCondition('field__expired_processed', 'value', 'NULL', '=') //I'm looking for this field
->fieldCondition('field_last_date_of_application', 'value', $date, '<=');
上記のコードで、フィールド値が初期化されていないノードを見つけたいと考えています:field_expired_processed。
!=、または比較にNULLを使用しても機能しないようです。
fieldCondition のドキュメントページを見ると、次の警告が表示されます。
このメソッドを使用すると、空のフィールド値を持つエンティティはEntityFieldQueryの結果から除外されることに注意してください。
Drupal 8でentityFieldQueryにフィールドが存在するかどうかを確認していますが、残念ながら Drupal 7)にバックポートされません =。
つまり、これを実現するには、標準の SelectQuery を使用する必要があります。データを含むテーブルを結合し、フィールドがIS NULLであるかどうかを確認する必要があります。次のようになります。
$q = db_select('node', 'n');
$q->condition('n.type', 'central_government_vacancy', '=')
->addJoin('LEFT', 'field_data_field_expired_processed', 'f')
->isNull('f.value');
$r = $q->execute();