Temukan semua entitas dari tipe yang diberikan?

8

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?

pengguna1359
sumber

Jawaban:

8

Anda sedang mencari EntityFieldQuerykelas :

$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_fielddan statusproperti 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.

Clive
sumber
1

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?

kenorb
sumber