2012-05-14 71 views
2

向Drupal站點的用戶註冊頁面添加新字段時,新字段不存儲在「用戶」表中,而是存儲在它們各自的表中。我設置了一個自定義表單模塊頁面,用戶可以根據年齡,性別,是否是學生,以及他們是否選擇通過Live名字接收消息來選擇哪些人收到他們的消息。我從來沒有用mySQL查詢使用過「join」,所以我不確定Drupal數據庫API的合適語法。這是我目前有:Drupal 7 - 查詢中的多個聯接給我帶來麻煩

$query = db_select("field_data_field_age", "a"); 
$query->join("field_data_field_gender", "g", "a.entity_id = g.entity_id"); 
$query->join("field_data_field_phone_number", "p", "a.entity_id = p.entity_id AND g.entity_id = p.entity_id"); 
$query->join("field_data_field_student", "s", "a.entity_id = s.entity_id AND g.entity_id = s.entity_id AND p.entity_id = s.entity_id"); 
$query->join("field_data_field_live", "l", "a.entity_id = l.entity_id AND g.entity_id = l.entity_id AND p.entity_id = l.entity_id AND s.entity_id = l.entity_id"); 
$query->groupBy("p.entity_id"); 
$query->fields("p", array("field_phone_number_value")) 
    ->condition("a.field_age_value", $values["age_lower"], >=) 
    ->condition("a.field_age_value", $values["age_upper"], <=) 
    ->condition("l.field_live_value", "Yes", =) 
    ->condition("g.field_gender_value", values["gender"], =); 

$phone_numbers = $query->execute(); 

此代碼是打破我的網站,我不確定我做錯了什麼。再次,我嘗試在「多個連接mysql」下搜索Google,但沒有發現任何專門處理Drupal數據庫API的事情。任何幫助將不勝感激,謝謝!

+0

這是模塊中的確切代碼嗎?如果是這樣,倒數第三行在「values」變量上缺少一個$。另外,運算符> =,<=和=需要是字符串(用引號引起來)。 – kevin628

+0

工作!確實很愚蠢的錯誤,非常感謝你的幫助,如果你添加你的評論作爲答案,我會接受它。 – Eric

+0

將其添加爲答案。 :) – kevin628

回答

4

倒數第三行在「values」變量上缺少$。

另外,運算符> =,< =和=需要是字符串(用引號引起來)。