Saya bekerja pada antarmuka admin untuk modul yang menggunakan tipe entitas kustom. Apakah ada fungsi atau cara yang bisa saya gunakan untuk menemukan semua entitas dari tipe tertentu, sehingga saya bisa memperlihatkan kepada pengguna daftar mereka?
Saya bekerja pada antarmuka admin untuk modul yang menggunakan tipe entitas kustom. Apakah ada fungsi atau cara yang bisa saya gunakan untuk menemukan semua entitas dari tipe tertentu, sehingga saya bisa memperlihatkan kepada pengguna daftar mereka?
Jawaban:
Anda sedang mencari EntityFieldQuery
kelas :
$query = new EntityFieldQuery;
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'article')
->fieldCondition('field_my_field', 'value', 'a_value')
->propertyCondition('status', 1)
->fieldOrderBy('field_my_field', 'value', 'DESC');
$results = $query->execute();
if (isset($results['node'])) {
$nodes = node_load_multiple(array_keys($results['node']));
foreach ($nodes as $nid => $node) {
// Do something with the node object
}
}
Kode di atas memuat semua entitas simpul dengan tipe konten article
. Ini filter pada bidang khusus yang disebut field_my_field
dan status
properti node. Saya hanya memasukkannya sebagai referensi Anda tidak perlu memuat semua node tanpa filter. Hal yang sama berlaku untuk pesanan menurut pernyataan.
Semoga itu bisa membantu.
Anda juga dapat mencoba dua lapisan sederhana berikut:
$res = (new EntityFieldQuery)->entityCondition('entity_type', 'node')->execute();
$entities = entity_load('node', array_keys(reset($res)));
Atau one-liner berikut (PHP> = 5.5), siap digunakan dengan drush eval
:
print_r((new EntityFieldQuery)->entityCondition("entity_type", "node")->entityCondition("bundle", "page")->execute());
Untuk menghapusnya, silakan periksa: Dapatkah saya menghapus node dari jenis konten yang diberikan dengan Drush?