我正在使用kohana 3.2。並且我在使這個新型號工作時遇到了一些麻煩。 有一個型號:Model_User_Unavailability
,它工作正常,並且沒有型號Model_User_Unavailability_Status
。Kohana 3.2。表名未找到
問題是沒有找到模型,它使用它。我可以用做一個狀態: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
功能。
其更好地使用'$狀態 - > user_availability = $ db'。另外,在保存'belongs_to'關係之前,你不需要調用'$ status-> save()'。 – biakaveron 2012-07-26 05:30:59
我有同樣的麻煩。 @biakaveron你能幫助澄清這一點,因爲它正是我所困惑的。如果'Model_A'屬於'Model_B',我做'$ a-> b = $ b;',我不需要調用'$ a-> save()'或者我不需要調用' $ B->保存()'?或者等等,我根本就不會調用save,因爲賦值('__set()')可以完成這項工作? – Lim 2013-04-08 02:45:28
不,'__set()'只會修改模型而不保存(https://github.com/kohana/orm/blob/3.3/master/classes/Kohana/ORM.php#L743)。在$模型中進行所有更改並保存。 – biakaveron 2013-04-08 05:15:51