kohana ORM error


kohana ORM error

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

My packages .php model:

<?php defined('SYSPATH') or die('No direct script access.');
    class Model_Packs extends ORM {
    }

My packages .php controller:

<?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]: Table 'packs_db. exe '[SHOW FULL COLUMNS FROM 'packses']

我检查了我的database.php配置文件,一切正常。为什么kohana要在表名后面加上"es"??

似乎kohana正试图"聪明",并根据类名猜测表名是什么。如果你把你的模型重命名为Model_Pack,它应该能做到。另一种解决方案是给出模型表名。

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

p/s:链接指向Kohana 2的约定。X,但它们仍然适用于3。

也有这个问题,我发现的解决方案之一是将set _table_names_复数变量限制为false。像这样:

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