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?

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.


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?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.