2013-09-25 65 views
0

我想創建一個AJAX表單,根據選擇的字段填充選擇字段的內容(您會看到很多與'國家'填充'州/省')。在我的情況下,我希望用戶只有在其中存在活動的accounts時才能夠選擇他們的provinceCakePHP 2.3:根據另一個模型的使用情況有條件地檢索獨特的模型信息

Javascript我可以寫沒有問題。獲取數據是我的工作......並沒有像做太多工作那樣陷入困境。 CakePHP的喜歡建立在形式

$options = array(select_option_value => display_text)

我的策略的陣列帶有選項選擇字段,雖然功能性,必須比蛋糕旨在更旋繞(這一個是控制器方法的段)。

$provinceData = $this->Account->find('all',array('recursive' => 0, 
                 'joins' => array(
                     array(
                     'table' => 'provinces', 
                     'type' => 'LEFT', 
                     'conditions' => array('Account.province_id = provinces.id') 
                    )), 
                 'fields'=>array('provinces.id', 'provinces.name', 'provinces.abbrev'), 
                 'conditions' => array('registration > 2'))); 
$provinces = array(); 
foreach($provinceData as $pd) { 
    /*note: lowercase, plural below b/c can't get 'alias' => 'Province' 
     to work in joins array above : (*/ 
    $id = $pd['provinces']['id']; 
    $name = $pd['provinces']['name']; 
    $provinces[$id] = $name; 
} 
$this->set(compact('provinces')); 

任何人都可以指出一個更合適的方法來做到這一點?我假設必須有一個可以做到這一點的MySQL查詢,但是我首先編寫詳細的MySQL查詢非常糟糕,更不用說通過Cake的約定了(對於你來說MySQL的大師們,我很樂意去做這從一個Model->query(//MySQL code)調用,而不是

的任何及所有的幫助真正的讚賞

回答

1

假設關係Account屬於關聯Province你可以試試這個代碼:!

$accounts = $this->Account->find(
    'all', 
    array(
     'fields' => array('Account.province_id', 'Province.name'), 
     'conditions' => array('Account.registration > 2'), 
     'group' => 'Account.province_id' 
    ) 
); 

$provinces = Hash::combine($accounts, '{n}.Account.province_id', '{n}.Province.name'); 

$this->set(compact('provinces')); 

編輯:錯過了支架和週期,而不是一個下劃線現在應該工作

+0

是的!兩個小編輯,以防其他人希望爲自己的解決方案建模;應該讀爲'{n} .Account.province_id',並且您對'Account-> find()'調用很害羞。 另外,我已經看到過這樣的語法:'{n} .....'不止一次 - 這是一個Cake慣例還是我不熟悉的PHP方面?人們在哪裏瞭解它? – Jonline

+1

我編輯過。對不起,錯別字。對於哈希語法請參閱[CakePHP手冊](http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html#hash-path-syntax) – arilia

+0

謝謝,完美。 :) – Jonline

相關問題