我在我的网站上使用了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] ????
答案 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在运行查询时不提供任何数据抽象 手动,因此数据库之间的确切结果会有所不同。