Drupal 7 memiliki sistem kueri mirip ORM yang sangat menjanjikan dengan EntityFieldQuery.
Saat ini, saya mengerti bagaimana memilih node, tetapi hasilnya tidak mengandung informasi spesifik, seperti fil, yang saya cari.
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'event')
->propertyCondition('status', 1)
->fieldCondition('field_date', 'value', array('2011-03-01', '2011-03-31'), 'BETWEEN')
->fieldOrderBy('field_date', 'value', 'ASC')
->execute();
Jadi kita perlu memuat seluruh data node, jika kita hanya ingin mendapatkan nilai dari satu bidang, misalnya 'field_date' dalam contoh saat ini.
$nodes = entity_load('node', array_keys($entities['node']));
Jika ada cara untuk mendapatkan nilai bidang, alih-alih memuat data lengkap semua node, karena memicu beberapa kelebihan memori.
$nodesFieldDates = ???
Saya menemukan jawabannya untuk ini! Modul Apache Solr memperluas kelas EntityFieldQuery untuk mewujudkannya. Itu menambahkan metode baru yang disebut addExtraField.
Jika Anda tidak menginstal Apache Solr cukup salin kode untuk memperluas kelas itu.
sumber
Anda tidak perlu menimpa apa pun atau memperluas kelas. Anda hanya perlu menggunakan
field_attach_load()
untuk melampirkan bidang yang Anda inginkan ke hasil dariEntityFieldQuery
kelas.Lihat juga Memuat Hanya Satu Field Dari Entitas atau Node di Drupal 7 , sebuah artikel bagus dengan contoh tentang bagaimana melakukannya.
sumber
Siapa pun yang masih ingin mendapatkan Fields dari EFQ lihatlah modul EFQ Extra Fields .
sumber