我正在研究一個CakePHP項目,它在查詢結果順序時給了我一些問題。這裏有三個表格:建築物(建築物上的所有信息),列表和列表建築物(建築物和列表的鏈接表)。我沒有構建應用程序,不幸的是無法更改數據庫結構。我希望$arrBuildings
成爲ListBuildings.created
(意思是建築物被添加到列表中的那一刻)的建築物列表,而不是Building.name
,因爲它看起來是現在。CakePHP查詢需要按JOIN列排序
function getList($list_id) {
// Get buildings in the list
$building_ids = $this->_getBuildingsForList($list_id);
$conditions = array(
'conditions'=>array('Building.id'=>$building_ids),
'contain' => array(
'List'=>array('conditions' => array ('List.id'=>$list_id))));
// Get the list information
$this->Building->List->recursive=-1;
$List=$this->Building->List->read(null,$list_id);
$options = array(
'conditions' => array('Building.id'=>$building_ids),
'contain' => array(
'List'=>array('conditions' => array ('List.id'=>$list_id)),
'Sqft'
),
);
$this->Building->myId=$this->getUserId();
$arrBuildings = $this->Building->find('all', $options);
print_r($arrBuildings);
}
由於我使用CakePHP,MVC的模型部分似乎是正確設置。與上面的代碼,print_r
顯示以下的數組:
Array ([0] => Array (
[Building] => Array (
[id] => 105
[name] => Stark Tower
[address] => 123 Main St.
)
[Sqft] => Array (
[0] => Array (
[id] => 51
[list_id] => 113
[building_id] => 105
[sq_feet] => 2200.000
)
)
[List] => Array (
[0] => Array (
[id] => 113
[title] => Awesome buildings
[ListBuilding] => Array (
[id] => 95
[list_id] => 113
[building_id] => 105
[created] => 2012-10-18 09:40:00))))
要重新狀態:如何訂購查詢(和得到的陣列)通過ListBuildings.Created
? 我試圖匿名的代碼,並可能已經搞砸了一些東西,所以讓我知道,如果有什麼沒有意義:) 在此先感謝您的任何反饋!
你的加入在哪裏?我沒有看到它 –
@BarryChapman,CakePHP在其模型「hasandbelongstomany」結構中加入這些表。所有這些「自動化」的東西讓我頭暈目眩。 – JamieHoward
啊,我以爲你是在明確地加入你的發現。 –