Bạn có thể sử dụng mã sau đây.
$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();
Các lệnh gọi tới SelectQuery :: tham gia () (như khôn ngoan ChọnQuery :: leftJoin () , SelectQuery :: InternalJoin () và SelectQuery :: addJoin () ) không thể có chuỗi vì các phương thức đó không trả về một SelectQuery
đối tượng, nhưng bí danh thực tế được sử dụng để tham gia. Nếu bạn thực thi đoạn mã sau, bạn sẽ gặp lỗi.
$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();
Các chuỗi trong PHP không phải là các đối tượng và chúng không định nghĩa execute()
phương thức.
Để xác minh mã đang thực hiện đúng truy vấn SQL, truyền $query
vào một chuỗi và in nó. Bạn sẽ nhận được truy vấn SQL sẽ được thực thi từ mã của bạn.
$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;
Với mã này, tôi nhận được đầu ra sau.
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()
không trả về mộtSelectQuery
đối tượng. Mã này đang kêu gọicondition()
một cái gì đó không phải là một đối tượng.