Второй where с if в drupal query

Главные вкладки

Аватар пользователя Кришпер Кришпер 4 мая 2018 в 16:08

От рабочий код

<?php        $nodes db_query(
             
"
            SELECT DISTINCT u.nid AS nid, u.model AS model, n.title AS title 
            FROM 
            uc_products u
            INNER JOIN node n ON n.nid = u.nid
            WHERE ( u.model LIKE :model )
            AND(  if ( ( select count(*) from uc_products tt where tt.model = concat('msk', SUBSTRING(u.model,4) ) ) = 0, 1, 0  )   )
            "
,
            array(
':model' => '%'.db_like('vlg').'%' )
        )
        ->
fetchAll();?>

А в этом итоговый скль строит некорректно.

<?php        $query db_select('uc_products''u');
        
$query->distinct();
        
$query->innerJoin('node''n''n.nid = u.nid');
        
$query->condition('model',   db_like('vlg') . '%''LIKE');
        
$query->addExpression("if ( ( select count(*) from uc_products tt where tt.model = concat('msk', SUBSTRING(u.model,1,3) ) ) > 0, 1, 0  )");
        
$query->fields'u', array('nid','model') );
        
$query->fields'n', array('title') );
        
$nodes $query->execute()->fetchAll();?>

Как переписать первый код. что бы второе условие добавлялось куда надо?