Drupal Views: добавить условие в предложение where, где значение является полем в hook_alter_query

Я пытаюсь добавить условие к запросу, например:

civicrm_contact_civicrm_relationship.id ‹> civicrm_contact_civicrm_relationship_1.id

но для второго поля drupal принимает его как строку, поэтому всегда получается

civicrm_contact_civicrm_relationship.id ‹> 'civicrm_contact_civicrm_relationship_1.id'

Я пытался играть с числовым значением без успеха.

Любая идея, как я могу это сделать? Может с другим крючком? любой совет будет приветствоваться!

Мой код:

        $view->query->where[2]["conditions"][0]["field"] = "civicrm_contact_civicrm_relationship_1.id";
        $view->query->where[2]["conditions"][0]["operator"] = "IS NULL";
        $view->query->where[2]["conditions"][0]["value"] = "";

        $view->query->where[2]["conditions"][1]["field"] = "civicrm_contact_civicrm_relationship.id";
        $view->query->where[2]["conditions"][1]["operator"] = "IS NULL";
        $view->query->where[2]["conditions"][1]["value"] = "";

        $view->query->where[2]["conditions"][2]["field"] = "civicrm_contact_civicrm_relationship.id";
        $view->query->where[2]["conditions"][2]["value"] ="civicrm_contact_civicrm_relationship_1.id";
        $view->query->where[2]["conditions"][2]["numeric"] = "1";
        $view->query->where[2]["conditions"][2]["operator"] = "<>";

        $view->query->where[2]["type"] = "OR";

person Lucia    schedule 06.06.2013    source источник


Ответы (1)


попробуйте что-то вроде

    function my_hook_views_query_alter(&$view, &$query)
    {
      if ($view->name == 'my_hook') {
        $alias = $query->add_table('civicrm_contact_civicrm_relationship','civicrm_contact_civicrm_relationship_1');
        $query->add_where_expression(0,'civicrm_contact_civicrm_relationship.id <> civicrm_contact_civicrm_relationship_1.id');
        dpm($query); //dumps object to admin with devel module
      }
    }
    

person Community    schedule 16.06.2013
comment
Спасибо!! Извините за поздний ответ, но, поскольку решение пришло немного позже, мне нужно было закончить кое-что, прежде чем я смог вернуться к этому! Но сработало отлично! Спасибо - person Lucia; 28.11.2013
comment
Меня интересует, как реализовать ИЛИ внизу его примера. - person zkent; 29.07.2015