【问题标题】:bypassing naming conventions in cakephp绕过 cakephp 中的命名约定
【发布时间】:2012-07-23 19:37:32
【问题描述】:
  1. 我已经有一个包含许多表的现有项目,因此我无法更改它们的名称。 我想将 cake php 设置为使用表格“休眠”- 所以可以说我有一张桌子叫: “股票实时” 我在Model->"StockRealtime.php"中设置了一个模型:

    StockRealtime 类扩展 AppModel{

    var $name = 'stock_realtime';
    

    }

并且控制器在Controller->"StocksRealtimeController.php"

class StocksRealtimeController extends AppController {

    var $name       = 'stock_realtime'; 

    function index() {
        $this->set('stocks', $this->StockRealtime->find('all'));

    }
}

和视图中的视图->stocks_realtime->index.ctp

我转到视图文件并收到错误消息:

Error: Call to a member function find() on a non-object 
File: C:\xampp\htdocs\s-maof-vb\stocksRT\app\Controller\StocksRealtimeController.php    

【问题讨论】:

    标签: hibernate cakephp find


    【解决方案1】:

    对于您的模型,添加var $useTable = 'stock_realtime';

    为您的控制器添加var $uses = 'StockRealtime';

    【讨论】:

    • 你不需要为你的控制器设置 $uses
    • @José Lorenzo 他的控制器名称是StocksRealtime。那不会寻找“StocksRealtime”模型吗?
    • 约定是,如果你有一个名为StockRealtime的模型,控制器应该是名称StockRealtimesController。如果你希望它是StocksRealtimeController,它不符合约定,因此需要$uses
    • 模型已连接,但现在它搜索表“StockRealtime”。错误:在数据源默认值中未找到模型 StockRealtime 的表 stock_realtimes。
    • 您是否将useTable 变量添加到模型中?如果你这样做了,做一个 debug(get_class($this->StockRealtime));在你的控制器中,你得到AppModel 还是StockRealtime
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多