cakephp sql在控制器中加入查询

时间:2013-09-23 03:33:31

标签: sql cakephp join controller

我是CakePHP的新手并坚持这种情况:

我正在开发一个测试系统,我有以下三个表:类别,子类别,测试

当我创建测试时,我将category_idsubcategory_id与其他数据存储在Test表中 现在在TestsController,我想读取记录的数量&查询匹配的行

我希望执行类似这些的查询:

查询1

select count(*) from Test where user_id='$user_id' and category_id=$category_id and subcategory_id=$subcategory_id

查询2

select 
a.test_id,
a.test_name,
a.user_id,
a.test_type,
a.create_date,
a.create_time,
a.category_id,
a.subcategory_id,
a.randomize,
a.test_password
from Test a, Category b, SubCategory c 
where user_id='$user_id' and 
a.category_id=$category_id and
a.subcategory_id=$subcategory_id and
a.category_id=b.category_id and
a.subcategory_id=c.subcategory_id

现在,我不想(我实际上不知道)使用$ hasMany,$ belongsTo等。

我只想在Controller&中执行这些查询。将数据传递给视图

注意:在所有简单的情况下,我都使用了CakePHP编码风格

我想知道,在执行查询2 后如何获取行数组 是否可以直接执行此类查询(如mysql_query)

1 个答案:

答案 0 :(得分:1)

您可以在测试模型中创建一个函数并访问查询,如:

class TestModel extends Model {
    ..
    public function getQueryData($user_id, $cat_id, $subcat_id) {
       return $this->query("SELECT a.test_id, a.test_name ..... ;");
    }
}

在测试控制器中,你可以这样做:

$this->loadModel("Test");
$result = $this->Test->getQueryData($user_id, $cat_id, $subcat_id);