kohana ORM错误

时间:2011-10-21 11:46:32

标签: php kohana

我有一个名为“packs”的db表(pack_id,pack_name,pack_description,pack_image)

我的packs.php模型:

<?php defined('SYSPATH') or die('No direct script access.');

    class Model_Packs extends ORM {

    }

我的packs.php控制器:

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Packs extends Controller {

    public function action_index($pack_name = null)
    {
        $view = new View('packs/index');                        
        $this->response->body($view); 
    }   

    public function action_pack()
    {
        $pack_name = $this->request->param('id'); //get the packname from uri

        $pack = ORM::factory('packs')->where('pack_name', $pack_name)->find();
        print_r($pack);die;

        $view = new View('packs/index'); 

        $this->response->body($view); 
    }   
} // End of file

致电www.mysite.com/packs/pack/aPackName,Kohana抛出此错误:

Database_Exception [1146]:表'packs_db.packses'不存在[从'packses'显示完整列]

我检查了我的database.php配置文件,一切正常。 为什么da hell是kohana在表名末尾添加“es”?我完全不解......

3 个答案:

答案 0 :(得分:1)

您的模型应以单数名词Model_Pack命名,即使您的表名为复数。这两条规则是Kohana ORM conventions的一部分。

p / s:该链接指向Kohana 2.x的约定,但它们仍然适用于3.x并进行了一些修改。

答案 1 :(得分:1)

似乎kohana试图“聪明”并猜测基于类名的表名是什么。 如果您将模型重命名为Model_Pack它应该可以解决问题。其他解决方案是为您的模型table name

答案 2 :(得分:1)

也有这个问题,我找到的解决方案之一是将set _table_names_plural变量限制为false。像这样:

class Model_Admin_Users extends ORM 
  {
  public function __construct()
    {
    $this->_table_names_plural = false;
    parent::__construct();
    }
  }