Puoi usare il seguente codice.
$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();
Le chiamate a SelectQuery :: join () (simile a SelectQuery :: leftJoin () , SelectQuery :: innerJoin () e SelectQuery :: addJoin () ) non sono in grado di eseguire la catena perché tali metodi non restituiscono un SelectQuery
oggetto, ma l'alias effettivo utilizzato per il join. Se si esegue il seguente codice, si otterrebbe un errore.
$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();
Le stringhe in PHP non sono oggetti e non definiscono il execute()
metodo.
Per verificare che il codice stia eseguendo la query SQL corretta, eseguire il cast $query
su una stringa e stamparlo. Otterrai la query SQL che verrebbe eseguita dal tuo codice.
$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 questo codice, ottengo il seguente output.
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()
non restituisce unSelectQuery
oggetto. Il codice richiedecondition()
qualcosa che non sia un oggetto.