Sie können den folgenden Code verwenden.
$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();
Aufrufe von SelectQuery :: join () (ebenso SelectQuery :: leftJoin () , SelectQuery :: innerJoin () und SelectQuery :: addJoin () ) sind nicht verkettbar, da diese Methoden kein SelectQuery
Objekt zurückgeben. aber der tatsächliche Alias, der für den Join verwendet wird. Wenn Sie den folgenden Code ausführen, wird eine Fehlermeldung angezeigt.
$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();
Zeichenfolgen in PHP sind keine Objekte und definieren die execute()
Methode nicht.
Um zu überprüfen, ob der Code die richtige SQL-Abfrage ausführt, wandeln Sie ihn $query
in eine Zeichenfolge um und drucken Sie ihn aus. Sie erhalten die SQL-Abfrage, die von Ihrem Code ausgeführt wird.
$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;
Mit diesem Code erhalte ich die folgende Ausgabe.
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()
Gibt keinSelectQuery
Objekt zurück. Der Code fordertcondition()
etwas, das kein Objekt ist.:)