1

我是 CakePHP 的新手,遇到了这种情况:

我正在开发一个测试系统,我有以下三个表: Category、SubCategory、Test

当我创建测试时,我将category_id,subcategory_id与其他数据一起存储在测试表中 现在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 等。

我只是想在控制器中执行这些查询并将数据传递给视图

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

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

4

1 回答 1

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);
于 2013-09-23T04:11:34.230 回答