0

私のcakephpでは、データベースからデータを取得する必要があります。

テーブルの結果をきちんとした形式で表示するにはどうすればよいですか。

コントローラ:

  function MarketingTaskmanagement(){
    $data['list'] = $this->TravancoAdmin->get_task_all();
    $this->set($data); 
    $this->render('Marketing/taskmanagement');
  }

モデル:

function get_task_all(){

               $users = $this->query('select * from tbl_tasks');

        if($users){
            return $users;
        }else{
            return 1;
        }
    }

意見:

ただし、値は非常に多くの配列として表示されます。

Array ( [0] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 1 [task_title_mm] => ghjg [task_description_mm] => gjg [task_from_mm] => 09/04/2012 [task_to_mm] => 09/27/2012 ) ) [1] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 2 [task_title_mm] => hf [task_description_mm] => hfgh [task_from_mm] => 09/03/2012 [task_to_mm] => 09/27/2012 ) ) [2] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 3 [task_title_mm] => hf [task_description_mm] => hfgh [task_from_mm] => 09/03/2012 [task_to_mm] => 09/27/2012 ) ) [3] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 4 [task_title_mm] => hfh [task_description_mm] => fgh [task_from_mm] => 09/03/2012 [task_to_mm] => 09/20/2012 ) ) [4] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 5 [task_title_mm] => h [task_description_mm] => h [task_from_mm] => 09/04/2012 [task_to_mm] => 09/28/2012 ) ) [5] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 6 [task_title_mm] => hjk [task_description_mm] => hk [task_from_mm] => 09/05/2012 [task_to_mm] => 09/22/2012 ) ) [6] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 7 [task_title_mm] => v [task_description_mm] => v [task_from_mm] => 09/03/2012 [task_to_mm] => 09/28/2012 ) ) [7] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 8 [task_title_mm] => d [task_description_mm] => d [task_from_mm] => 09/03/2012 [task_to_mm] => 09/28/2012 ) ) [8] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 9 [task_title_mm] => f [task_description_mm] => d [task_from_mm] => 09/04/2012 [task_to_mm] => 09/27/2012 ) ) [9] => Array ( [tbl_tasks] => Array ( [task_ids_mm] => 10 [task_title_mm] => b [task_description_mm] => b [task_from_mm] => 09/05/2012 [task_to_mm] => 09/27/2012 ) ) ) 

codeigniterには次のようなものがあります:

$users = $this->query('select * from tbl_tasks')->result();

次に、問題なく正しい配列を表示します。

では、どうすればこれをcakephpで行うことができますか?

そしてtask_title_mm、ビューページにテーブル結果のすべての値を表示する必要があります。

これどうやってするの?

4

3 に答える 3

1

「検索」メソッドを使用します。

$this->ModelName->find('all');

また

$this->ModelName->find('list');

クエリから必要な情報が少ない場合は、次のように入力します。

$this->ModelName->recursive = -1;

メソッドを見つける前に。

于 2012-09-12T11:52:30.883 に答える
0

function get_task_all(){
$ users = $ this-> query('select * from tbl_tasks')...。

よーよーよー!やめて!それはちょうど私に心臓発作を与えました。

零。クックブックを読んでください!まじめな話、やめて!先に進む前に、少なくとも一度はクックブックを読むことをお勧めします。最初から正しい方法で物事を行うことが進むべき道です。

  1. ケーキが仕事を成し遂げるためにあなたに提供した適切な方法を使用してください。SQLクエリは仕事をうまくやり遂げることができますが、Cakeの組み込みメソッドを使用すると、長期的にメリットがあり、生活がはるかに楽になると信じてください。

  2. データを表形式で表示する方法に関するクエリに従って、ケーキベイクを使用します:http://book.cakephp.org/1.3/view/1522/Code-Generation-with-Bake。ケーキベイクユーティリティは、含まれているアプリケーションコントローラ、モデル、ビューの基本的なスキャフォールドを生成します。ケーキのデフォルトのビューテンプレートは非常に便利で、ほとんどすべての機能が組み込まれています。

ページ化された結果が必要ですか?paginateを使用しても問題ありません!

function index() {
    $this->ModelAlias->recursive = -1;
    $this->set('list', $this->paginate());
}

そして出来上がり!$list内のページ付けされたデータをビューですぐに利用できます。また、ビューをベイク処理した場合は、必要に応じてすべてがテーブルに適切に表示されます。

すべてをフェッチしたくないですか?次のように条件をpaginateに挿入します。

function index() {
    $this->ModelAlias->recursive = -1;
    $this->paginate = array(
        'conditions' => array('ModelAlias.tasks' => 'incomplete')
    );
    $this->set('list', $this->paginate());
}

これだけでなく、ケーキがサポートする「フィールド」、「順序」、「制限」など、事実上すべての他のキーを含めることができます。

ケーキの機能を使い始めると、物事は本当に素晴らしいものになり始めます。関連データをフェッチするために、ケーキの「containable」動作を使用できます。これは、ケーキが本当にうまくいく数百のうちの1つにすぎません。ここですべてを概説することはできません。クックブックhttp://book.cakephp.orgにアクセスしてください。

于 2012-09-12T23:52:05.550 に答える
0

あなたが質問を拡大したので、私は答えについて少し詳しく説明します。

$this->query()ネイティブケーキ検索が機能する場所では使用しないことをお勧めします。

作成するモデルファイルがない場合tbl_tasks

<?php
class Task extends AppModel {
    var $name = 'Task';
    var $displayField = 'task_title_mm';
    var $useTable = 'tbl_tasks';
}

関数内にロードしますget_task_all()。モデルを別のモデル内に動的にロードできます。

function get_task_all(){
    //load the Task model on the fly if it isnt associated with this one
    //loadModel won't work because we're inside a model. 
    //App:import might work, dunno.
    $this->Task = ClassRegistry::init('Task');

    $users = $this->Task->find('list');

    return $users ? $users : 1;
}

find('list')'task_title_mm'displayFieldとして宣言した場合は機能しますが、それ以外の場合はを使用できます$this->Task->find('all', array('fields' => array('task_title_mm')));が、結果には接頭辞['Task'];が付きます。

于 2012-09-12T11:53:45.180 に答える