我所要做的就是查詢一個數據庫表,查看我所在州的縣名單。我想拉對應這些縣的5個城市,並在頁面上列出它們。我正在使用JOIN來做到這一點,因爲這是我的搜索引導我相信我需要的。Codeigniter和JOIN查詢的問題
到目前爲止,我將所有信息從我的模型傳遞到我的控制器,然後在我的視圖中顯示它並沒有任何問題。問題在於,城市名單似乎將其自身限制在每縣只有1個城市。你看到我的查詢有問題嗎?我試過(貌似)所有的東西,但是因爲我很新,所以我確信我有一些愚蠢的東西,我錯過了。
<?
class Index_model extends CI_Model {
function __construct()
{
// Call the Model constructor
parent::__construct();
$this->load->database();
}
public function countiesWithCities() {
$this->db->select("*");
$this->db->from("cities");
$this->db->join("counties", "cities.county_id = counties.county_id");
$query = $this->db->get();
return $query->result();
}
}
這是查詢的結果:
array(5) {
[0]=> object(stdClass)#17 (5) {
["city_id"]=> string(1) "0"
["county_id"]=> string(1) "5"
["city_name"]=> string(8) "Munising"
["county_name"]=> string(5) "Alger"
["number_of_cities"]=> string(1) "1"
}
[1]=> object(stdClass)#18 (5) {
["city_id"]=> string(1) "1"
["county_id"]=> string(1) "1"
["city_name"]=> string(7) "Redford"
["county_name"]=> string(5) "Wayne"
["number_of_cities"]=> string(1) "2"
}
[2]=> object(stdClass)#19 (5) {
["city_id"]=> string(1) "2"
["county_id"]=> string(1) "1"
["city_name"]=> string(7) "Livonia"
["county_name"]=> string(5) "Wayne"
["number_of_cities"]=> string(1) "2"
}
[3]=> object(stdClass)#20 (5) {
["city_id"]=> string(1) "3"
["county_id"]=> string(1) "4"
["city_name"]=> string(6) "Monroe"
["county_name"]=> string(6) "Monroe"
["number_of_cities"]=> string(1) "1"
}
[4]=> object(stdClass)#21 (5) {
["city_id"]=> string(1) "4"
["county_id"]=> string(1) "2"
["city_name"]=> string(16) "Farmington Hills"
["county_name"]=> string(7) "Oakland"
["number_of_cities"]=> string(1) "1"
}
}
這似乎不錯,但例如數組[2]應該有其下上市更多的城市,比其他「利沃尼亞。」我似乎無法弄清楚如何完成這個?任何人有任何建議或幫助?
嘗試'$ this-> db-> join(「counties」,「counties.county_id = cities.county_id」);' – Mudshark
@Mudshark似乎根本沒有任何改變 – Ellenbrook
編輯你的問題是非常清楚你想要的視圖輸出的樣子。您的評論如下仍不清楚。 (並應該在你的問題。)「列出縣和城市」是*模糊*。循環「是代碼做的事情,不是說輸出是什麼樣的,不要說這個查詢」應該「返回什麼,它*返回它應該返回的結果;你應該改正你的期望值(你可能想要一個數組(country_id ,縣名,(city_id,city_name)的數組)或者爲了排列上面的查詢。)*正確地描述你想要的視圖輸出。* – philipxy