【发布时间】:2012-11-17 15:37:32
【问题描述】:
我对 Kohana (3.2) ORM 查询构建器有一个奇怪的问题,我不知道出了什么问题。我得到“不正确的表名”异常:
Database_Exception [ 1103 ]: Incorrect table name '' [ SELECT ``.* FROM `` JOIN `user_plugins` ON (`user_plugins`.`plugin_id` = ``.`id`) WHERE `user_plugins`.`user_id` = '9' ]
如您所见,查询中的表为空。
控制器:
$user = ORM::factory('user', Auth::instance()->get_user()->id);
if ($user->loaded() )
{
$result = $user->plugin->find_all();
}
用户模型:
class Model_User extends Useradmin_Model_User
{
protected $_has_many = array(
'plugin' => array( 'through' => 'user_plugins'),
);
...
user_plugin 模型
class Model_user_plugin extends ORM
{
protected $_belongs_to = array(
'plugin' => array(),
'user' => array()
);
...
插件模型
class Model_Plugin extends ORM
{
protected $_has_many = array(
'user' => array('through' => 'user_plugins')
);
...
有人知道这里有什么问题吗? 非常感谢任何帮助!
【问题讨论】:
-
Useradmin_Model_User中有什么内容? PS。为什么你使用单数形式的关系名称?应该是users、plugins等。 -
感谢您的回复。我正在使用带有一些小修复的 Mixu Useradmin 模块(主要是为了使其与 Kohana 3.2 兼容)。你可以在这里找到源代码:github.com/mixu/useradmin/blob/master/classes/useradmin/model/…
-
你能告诉我
var_dump($user)的结果吗? -
嗯,这很奇怪。我已将此问题跟踪到 Kohana_ORM 类中的 __get 函数。当
$model = ORM::factory($this->_has_many[$column]['model']);行设置相关模型时(在 Kohana_ORM 中的第 580 行附近),_object_name 变量设置不正确,稍后用于创建第二个连接列$join_col2 = $model->_object_name . '.' . $model->_primary_key;知道为什么会失败吗?这是 $user 的转储:pastebin.com/U63JMaR0,这里是创建的 $model 对象的转储:pastebin.com/EXATcFLr -
也许你改变了Plugin的
_initialize()方法?Model_Plugin代码是什么?
标签: php kohana kohana-3 kohana-orm kohana-3.2