Puedes usar el siguiente código.
$query = db_select('digitaliq_flds_by_node', 'a')->fields('a');
$alias = $query->join('digitaliq_fld_category', 'b', 'a.fld_id = %alias.fld_id AND a.fld_collection_id = %alias.fld_collection_id AND a.fld_group_name = %alias.fld_group_name');
$terms = $query->execute();
Las llamadas a SelectQuery :: join () (al igual que SelectQuery :: leftJoin () , SelectQuery :: innerJoin () y SelectQuery :: addJoin () ) no se pueden encadenar porque esos métodos no devuelven un SelectQuery
objeto, pero el alias real usado para la unión. Si ejecuta el siguiente código, obtendrá un error.
$query = db_select('digitaliq_flds_by_node', 'a')
->fields('a')
->join('digitaliq_fld_category', 'b', 'a.fld_id = %alias.fld_id AND a.fld_collection_id = %alias.fld_collection_id AND a.fld_group_name = %alias.fld_group_name')
->execute();
Las cadenas en PHP no son objetos, y no definen el execute()
método.
Para verificar que el código está ejecutando la consulta SQL correcta, se convierte $query
en una cadena e imprime. Obtendrá la consulta SQL que se ejecutará desde su código.
$query = db_select('digitaliq_flds_by_node', 'a')->fields('a');
$alias = $query->join('digitaliq_fld_category', 'b', 'a.fld_id = %alias.fld_id AND a.fld_collection_id = %alias.fld_collection_id AND a.fld_group_name = %alias.fld_group_name');
print $query;
Con este código, obtengo el siguiente resultado.
SELECT a.*
FROM
{digitaliq_flds_by_node} a
INNER JOIN {digitaliq_fld_category} b ON a.fld_id = b.fld_id AND a.fld_collection_id = b.fld_collection_id AND a.fld_group_name = b.fld_group_name
leftJoin()
no devuelve unSelectQuery
objeto. El código está llamandocondition()
a algo que no es un objeto.