Tìm tất cả các thực thể của một loại nhất định?


8

Tôi đang làm việc trên giao diện quản trị cho một mô-đun sử dụng loại thực thể tùy chỉnh. Có một chức năng hoặc một cách nào đó mà tôi có thể sử dụng để tìm tất cả các thực thể của một loại nhất định, để tôi có thể hiển thị cho người dùng một danh sách của chúng không?

Câu trả lời:


8

Bạn đang tìm EntityFieldQuerylớp học :

$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
  }
}

Đoạn mã trên tải tất cả các thực thể nút với một loại nội dung article. Nó lọc trên một trường tùy chỉnh được gọi field_my_fieldvà thuộc statustính của nút. Tôi chỉ đưa nó vào để tham khảo, bạn sẽ không cần nó để tải tất cả các nút mà không có bất kỳ bộ lọc nào. Cùng đi cho thứ tự bằng tuyên bố.

Mong rằng sẽ giúp.


1

Bạn cũng có thể thử hai lớp lót đơn giản sau:

$res = (new EntityFieldQuery)->entityCondition('entity_type', 'node')->execute(); 
$entities = entity_load('node', array_keys(reset($res)));

Hoặc một lớp lót sau (PHP> = 5.5), sẵn sàng để sử dụng với drush eval:

print_r((new EntityFieldQuery)->entityCondition("entity_type", "node")->entityCondition("bundle", "page")->execute());

Để xóa chúng, vui lòng kiểm tra: Tôi có thể xóa các nút của một loại nội dung nhất định bằng Drush không?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.