Kohana 3.2。表名未找到

时间:2012-07-25 12:43:37

标签: php orm kohana kohana-3

我正在使用kohana 3.2。我在使这个新模型工作时遇到了一些麻烦 有一个模型:Model_User_Unavailability工作正常,而模型Model_User_Unavailability_Status则没有。

问题是没有找到模型,它正在使用它。我可以使用ORM::factory('user_unavailability_status');创建一个状态,它可以正常工作,但是当我想将状态添加到不可用性类时,它将无法工作,并且我得到以下异常:

Incorrect table name '' [ INSERT INTO `` (`user_unavailability_id`, `status_id`) VALUES ('670', NULL) ]

这些课程如下:

class Model_User_Unavailability extends ORM
{
    protected $_belongs_to = array(
        'user' => array(),
    );
    protected $_table_name = 'user_unavailability';

    protected $_has_many = array(
        'status' => array(
            'model' => 'User_Unavailability_Status', 
            'foreign_key' => 'user_unavailability_id'
        )
    );
...etc

class Model_User_Unavailability_Status extends ORM
{
    protected $_table_name = 'user_unavailability_status';
    protected $_belongs_to = array(
        'user_unavailability' => array(
            'foreign_key' => 'user_unavailability_id', 
            'model' => 'user_unavailability'
        )
    );
    etc...

现在,当我尝试以下操作时会出现异常:

$db = $user->unavailable->where('id', '=', $id)->find(); // Returns User_Unavailability object
//... do some other stuf...
$db->save();

if($db->loaded())
{
    $status = ORM::factory('user_unavailability_status');
    $status->status = 'requested';
    $status->responder_id = 1;
    $db->add('status',$status);
}

正如您在前面的异常中所看到的,它不会使用指定的表名。但是,当我从状态类中删除$ _table_name变量时,我收到以下错误:

Table 'urenregistratie.user_unavailability_statuses' doesn't exist [ SHOW FULL COLUMNS FROM `user_unavailability_statuses` ]

正如您所见,它确实找到了模型,但找不到数据库表。所以我的问题是,这里发生了什么?我想我错过了什么,但我不知道是什么......

当我在状态模型中使用$this->_table_names_plural = false时也会发生相同的情况。

那么......任何建议/想法?

修改

当我将$db->add('status',$status);行更改为:

时似乎有效
$status->user_unavailability_id = $db->id;
$status->save();

虽然并不漂亮,但仍然想知道是什么阻止我使用add功能。

1 个答案:

答案 0 :(得分:2)

{p> add()用于has_many "through"关系。

在你的情况下,你已经写了正确的方法:

$status->user_unavailability_id = $db->id;
$status->save();