在hook_views_query_alter()中添加JOIN语句

Juk*_*box 3 php sql drupal drupal-6

我需要修改一个查询视图生成,以便我可以使用高度自定义的过滤器.由于这个问题,我已经使用一些OR实现了add_where()函数:Drupal View Filters中的OR运算符

然而,这只能解决我的一部分问题.有些字段我无法过滤,因为我需要在查询中添加额外的JOIN.

有什么东西沿着这条线

$view->query->add_where()
Run Code Online (Sandbox Code Playgroud)

可以插入JOIN语句吗?

use*_*841 5

我在这里找到了答案.无耻的副本:

function hook_views_query_alter(&$view, &$query) {
    $join = new views_join();
    $join->table = 'my_table';
    $join->field = 'my_field';
    $join->left_table = 'left_table';
    $join->left_field = 'left_field';
    $join->type = 'left';
    $join->extra = array(
        array(
            'field' => 'bundle',
            'value' => 'user',
        )
    );
    $query->add_relationship('relationship_name', $join, 'node');
}
Run Code Online (Sandbox Code Playgroud)