2016-08-21 67 views
0

我有一个从表中抓取数据的API,将数据串行化,然后通过服务发回。该代码是使用CakePHP使用MySQL编写的。添加了下划线的表名

当我传入表名(例如RX_Scaled)时,返回表r_x_scaled无法找到的错误(这并不让我感到意外,数据库中的表名是rx_scaled)。

为rx_scaled我的模型/表是这样

class rx_scaleds extends Table 
{ 
    public function initialize(array $config) 
    { 
     parent::initialize($config); 
     $this->table('rx_scaled'); 
    } 

与模型/实体

class rx_scaled extends Entity 
{ 
} 

我的服务API定义是这样设置APIController.php文件中

public function getData($tablename, $id="", $filter = "-", $order = "-", $take = 0) 
{ 
    $the_table = $tablename; 

    $this->autoRender = false; 

    $table = TableRegistry::get($tablename); 

    $data = null; 

    switch (strtolower($the_table)) 
    { 
     case "rx_scaled": 
      $data = $table->find(); 
      echo $data; 
      break; 
    } 

(这是截断的)

奇怪的是,这个错误不会发生在所有表中。

我显然不是做一些正确的,但我不知道什么

+0

'表类使用驼峰格式表名wi的版本将Table后缀作为类名称.'和'Entities默认使用表名的单个CamelCase版本作为它们的类名。[Quick Example](http://book.cakephp.org/3.0/en/orm的.html#快速的例子)。你没有正确定义表类和实体类。 – user3082321

回答

0

你命名你的表对象rx_scaleds但你传递RX_ScaledgetData行动

蛋糕尽量不要找表对象命名为RX_Scaled尝试活用mysql表的名称:所以使用cake的约定RX_Scaled映射到r_x_scaled

那么你能做什么?

使用蛋糕约定

名称你表RxScaledsTable

class RxScaledsTable extends Table 

名称您实体RxScaled

class RxScaled extends Entity 

和字符串'RxScaled'传递给你的行动