如何在cake php中简化查询执行的行

时间:2012-09-12 11:41:40

标签: cakephp

在我的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值。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用“查找”方法。

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

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

如果您需要查询的信息较少,请输入:

$this->ModelName->recursive = -1;
找到方法之前

答案 1 :(得分:0)

由于你扩展了你的问题,我将在anwser上详细说明一下。

最好不要使用$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')声明为displayField,则

'task_title_mm'有效,否则您可以使用$this->Task->find('all', array('fields' => array('task_title_mm')));,但结果将以['Task']为前缀;

答案 2 :(得分:0)

function get_task_all(){
               $ users = $ this-&gt; query('select * from tbl_tasks')....

嘿嘿嘿!停在那儿!那只是让我心脏病发作。

零。阅读食谱!不,真的,停!在你再进一步之前,我建议至少阅读一次食谱。从一开始就做正确的事情就是要走的路。

  1. 使用蛋糕为您提供完成工作的正确方法。 SQL查询可以很好地完成工作,但相信我使用蛋糕的内置方法将使您长期受益并使您的生活更轻松。

  2. 根据您对如何以表格格式显示数据的查询,请使用蛋糕烘焙:http://book.cakephp.org/1.3/view/1522/Code-Generation-with-Bake。蛋糕烘焙实用程序将为您的应用程序控制器,模型,视图生成基本支架。蛋糕的默认视图模板非常有用,并且内置了几乎所有功能,分页等。

  3. 想要分页结果吗?没问题使用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());
    }
    

    不仅如此,您还可以包含蛋糕支持的“字段”,“订单”,“限制”等几乎任何其他键。

    一旦你开始使用蛋糕的功能,事情开始变得非常棒。要获取相关数据,您可以使用蛋糕'可包含'行为。这只是数百种蛋糕确实很好的一件事。我无法概述这里的所有内容,我坚持请你去阅读食谱http://book.cakephp.org