我有我希望有人可以幫助我的問題。我認爲這段代碼是正確的,但它不起作用。下面是我的代碼,它是我的CakePHP 2.2.2站點的一個函數,代碼的主要目的是從數據庫結果產生一個菜單系統。問題是我的foreach循環,它不會循環。所有$ Key都會返回2的值(此時表中有三條記錄)。所以當我顯示/ echo/debug $ Menu時,我得到的唯一結果是存儲在數據庫中的最後一個結果。CakePHP的Foreach邏輯問題
我知道SQL命令是正確的,如果這是debuged /回顯,然後顯示所有三個結果。這個循環的想法是讓它計算結果,以便我可以對選定的字段進行檢查。我哪裏出錯了?
function MenuSystem() {
$this->loadModel('Menu');
$MenuSQL = $this->Menu->find('all', array('conditions' => array('active' => true)));
foreach ($MenuSQL as $Key=>$Value) {
$MenuSystem = $MenuSQL[$Key];
$this->Menu = $MenuSystem;
}
}
非常感謝, 格倫。
UPDATE :::
下面是我的職責,我現在的foreach循環現在工作了,不知道我在做什麼錯的,但我想知道它的工作。您可以看到我用於測試的print_r命令,如果使用該命令,那麼來自我的數據庫的所有鏈接都將在屏幕上顯示/回顯並顯示所有作品。但是如果我嘗試從另一個控制器調用$ this-> Menu,則只有最後一條記錄在屏幕上回顯。我在foreach循環之外移動了$ this-> Menu,但它在循環內部或外部沒有任何區別,它仍然只響應最後一個記錄,而不是全部三個。那麼我做錯了什麼?
function MenuSystem() {
$this->loadModel('Menu');
$SiteBase = '/projects/cake/';
$MenuSQL = $this->Menu->find('all', array('conditions' => array('active' => true)));
foreach ($MenuSQL as $key => $Value) {
$MenuAccessLevel = $MenuSQL[$key]['Menu']['roles_id'];
if ($MenuAccessLevel == 1) {
$Path = $MenuSQL[$key]['Menu']['path'];
$Title = $MenuSQL[$key]['Menu']['title'];
$MenuSys = "<a href=\" " . $SiteBase . $Path . " \">" . $Title ."";
} else {
print ("Admin");
}
//print_r($MenuSys);
} //End of Foreach Loop
$this->Menu = $MenuSys;
} //End of function MenuSystem
+1還糾正語法和使用適當的(CakePHP的)編碼stadards :) – mark
對不起,我不認爲這會爲我想要做的事情工作,伯爵只是給你一個總量的權利? (我檢查它,玩它來看我自己)。我最終的目標是檢查菜單表中的字段,稱爲角色,它將設置爲用戶或管理員。因此,我不需要總數,我需要循環查看此表中的每個記錄。 –
我已更新我的答案 –