it-swarm.asia

البحث عن جميع الكيانات من نوع معين؟

أنا أعمل على واجهة إدارة لوحدة نمطية تستخدم نوع كيان مخصص. هل هناك وظيفة أو طريقة ما يمكنني استخدامها للعثور على جميع الكيانات من نوع معين ، حتى أتمكن من إظهار قائمة بها للمستخدمين؟

8
user1359

أنت تبحث عن EntityFieldQuery class :

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

يحمّل الرمز أعلاه جميع كيانات العقدة بنوع محتوى article. تقوم بتصفية حقل مخصص يسمى field_my_field وخاصية status للعقدة. أضع هذا فقط كمرجع لن تحتاج إليه لتحميل جميع العقد بدون أي فلاتر. وينطبق الأمر نفسه على البيان.

امل ان يساعد.

8
Clive

يمكنك أيضًا تجربة البطانة البسيطة التالية:

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

أو الخطوط التالية (PHP> = 5.5) ، جاهزة للاستخدام مع drush eval:

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

لإزالتها ، يرجى التحقق: هل يمكنني حذف العقد من نوع محتوى معين باستخدام Drush؟

1
kenorb