誰かが私を助けてくれることを願っています。このコードは正しいと思いましたが、機能しません。以下は私のコードです。これは私のCakePHP2.2.2サイトの関数です。コードの主な目的は、データベースの結果からメニューシステムを作成することです。問題は私のforeachループにあり、ループしません。$ Keyが行うのは、値2(現時点ではテーブル内の3つのレコード)を返すことだけです。したがって、$ Menuを表示/エコー/デバッグすると、データベース内に保存されている最後の結果のみが得られます。
SQLコマンドが正しいことはわかっています。それがデバッグ/エコーされると、3つの結果すべてが表示されます。このループのアイデアは、選択したフィールドでチェックを実行できるように、結果をカウントするようにすることでした。どこが間違っているのですか?
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;
}
}
グレン、どうもありがとう。
アップデート :::
以下は私の関数です。これでforeachループが機能し、何が間違っていたのかわかりませんが、機能していると思います。テストに使用しているprint_rコマンドを確認できます。これを使用すると、データベースのすべてのリンクが画面に印刷/エコーされ、すべて機能します。しかし、別のコントローラーから$ this-> Menuを呼び出そうとすると、最後のレコードのみが画面にエコーされます。$ this-> Menuをforeachループの外側に移動しましたが、ループの内側または外側で違いはなく、3つすべてではなく、最後のレコードのみをエコーします。だから私は何を間違っているのですか?
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