تصویر نیلوفر بهرامی

همانطور که می دانید  EFQ  یک کلاس  برای ایجاد پرس و جو برای استخراج entity بر اساس شرط هایی خاص روی پایگاه داده می باشد

گاهی اوقات نیاز است که بین این شروط یک عملگر "OR" پیاده سازی شود

روش اول :

function yourmodulename_query_tag_alter(QueryAlterableInterface $query) {
   $group = og_context_determine_context();
  $tid = $group->etid;
  $query
    ->leftJoin(‘field_data_field_archive’, ‘a’, ‘node.nid = a.entity_id’);
  if ($tid) {
    $or = db_or()
          ->condition(‘a.field_archive_tid’, array($tid), ‘NOT IN’)
          ->isNull(‘a.field_archive_tid’);
    $query
      ->condition($or);
  }

  public function yourmodulename() {
        ->entityCondition(‘entity_type’, ‘node’)
      ->propertyCondition(‘status’, 1)

      ->entityCondition('bundle', 'article') 

     ->addtag(tag); 
      ->propertyOrderBy(‘created’, ‘DESC’);

    //archive a node for display
    $this->archive();
  }

 

روش دوم : ایجاد دو EFQ   روی یک entity  و ادغام کردن خروجی ها با دستور

$result = array_merge_recursive($result_one, $result_two);

افزودن نظر جدید