我正在使用 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
功能。