2012-05-09 17 views
0

In echo $ dataを実行すると、ユーザーモデルのデータが出力されます。私の質問は、私がやろうとしたが、動作しなかった同じデータをユーザーコントローラで取得する方法です。モデルからコントローラへのデータの取得

user.php(モデル)

function display_children($parent, $level) 
     { 
    $result = mysql_query('SELECT title FROM tree '.'WHERE parent="'.$parent.'"'); 

    while ($row = mysql_fetch_array($result)) 
      { 
        $data = str_repeat(' ',$level).$row['title']."\n"; 

        // echo $data if i remove comment it display all data 

        // i m getting all data on this variable $data 

        $this->display_children($row['title'], $level+1); 
      } 
    } 

users_controller.php

public function admin_mlm($id){ 

    pr($this->User->display_children('Food',0)); // function argument work but no data printed here 
} 
+0

DBにレベル= 0のデータがありますか? –

+0

私はユーザーコントローラから引数を渡します。私のデータはモデルで正しく表示されますが、コントローラの同じデータを取得する方法は問題があります。 –

+0

これは単純なタスクのラッパークラス(データソース)を使用しない理由です。結局、強力なフレームワークの主な利点の1つです。 – mark

答えて

1

アプリでCakePHP 1.3 Conventionsに従えば、あなたは 'するmysql_query()を' を使用する必要はないと'mysql_fetch_array()' PHPはCakePHPベースのアプリケーションで動作します。

これがフレームワークである理由です。これは、アプリケーションに別の抽象化レイヤーを提供します。だから、

あなたが行うことができ、あなたのコントローラ内の規則に従っている場合:

$this->User->find('all', array('conditions' => array('id' => $user_id))); 

あなたはdocumentationをチェック 状態、または順序などとして、これまでほとんど何を供給することができます。

'threaded' Model::find() typeもあります。ネストされた配列を返します。見てみな! ;)

+0

thats私が考えていたことは...カスタムSQL文でも、彼はデータソース(およびクエリメソッド)を使用しているはずです。しかし、この単純なケースでは、実際にfind()を使用する必要があります。 – mark

+0

whileループの状態について、私はループwhileの使い方を指します。 –

+0

私は自分の答えを編集しました。 Model :: find( 'threaded')をチェックしてください。 :) –

関連する問題