在cakephp中使用自定义查询时出错?

时间:2013-05-18 11:09:37

标签: php sql cakephp

我在我的网站上使用了cakephp。我用它来使用sql server 2012。 当我使用时,我感到困惑:

$this->set('types',$this->Manager->query('select * from product_types'));

获取所有产品类型的数组 返回数组是:

Array
(

    [0] => Array
    (
        [0] => Array
        (
            [id] => 1
            [name] => hoa my pham
        )
    )

    [1] => Array
    (
        [0] => Array
        (
            [id] => 2
            [name] => hoa my
        )

    )

)

为什么[0]代替[product_types] ????

2 个答案:

答案 0 :(得分:1)

请遵循现有的文档和教程。

然后你就可以使用

$this->set('managers', $this->Manager->find('all'));

同样的事情 - 使用包装函数和sql server数据源的干净方法。

对于SqlServer,应该有一个可用的数据源,例如: https://github.com/cakephp/datasources/blob/2.0/Model/Datasource/Database/Sqlsrv.php

答案 1 :(得分:0)

这是来自CakePHP文档:

To use the model name as the array key, and get a result consistent with that returned by the Find methods, the query can be rewritten:

$this->Picture->query("SELECT * FROM pictures AS Picture LIMIT 2;");

which returns:

Array
(
    [0] => Array
    (
        [Picture] => Array
        (
            [id] => 1304
            [user_id] => 759
        )
    )

    [1] => Array
    (
        [Picture] => Array
        (
            [id] => 1305
            [user_id] => 759
        )
    )
)

所以你需要:

$this->set('types',$this->Manager->query('select * from product_types as Product_Types'));

来源:http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

P.S:

  

此语法和相应的数组结构对MySQL有效   只要。 Cake在运行查询时不提供任何数据抽象   手动,因此数据库之间的确切结果会有所不同。