我正在開發一個個人項目。CakePHP bindModel工作,預設模型關聯不是
我有兩個模型'顯示'和'插曲'。我有一個控制器'Ops'。
顯示模式:
class Show extends AppModel
{
var $name = 'Show';
var $hasMany = array(
'Episode' => array(
'className' => 'Episode',
'foreignKey' => 'show_id'
)
);
}
情節模式:
class Episode extends AppModel
{
var $name = 'Episode';
var $belongsTo = array(
'Show' => array(
'className' => 'Show',
'foreignKey' => 'show_id'
)
);
}
行動控制器:
class OpsController extends AppController
{
var $name = 'Ops';
var $uses = array('Show','Episode');
function index()
{
$episodes = $this->Episode->find('all',array(
'limit' => 10,
'order' => array('Episode.first_aired' => 'DESC'),
)
);
debug($this->Episode);
debug($episodes);
}
}
當運行行動控制器我得到了 '情節' 的記錄,像我想要的,但請勿根據'belongsTo'配置中的'show_id'獲取關聯的'Show'記錄。看起來它並沒有引用模型,因爲我可以故意破壞模型類,而請求仍在繼續。
做了很多檢查,從事研究和測試後,我能得到它由find()請求之前添加以下到行動控制器開始工作:
$this->Episode = ClassRegistry::init('Episode');
$this->Episode->bindModel(
array('belongsTo' => array(
'Show' => array(
'className' => 'Show'
)
)
)
);
趁現在這個作品我仍然想知道爲什麼我的模型沒有被正確調用。非常感激任何的幫助。謝謝!
是的,我已經仔細檢查了字段類型並正確設置。我也嘗試過使用'foreignKey'設置,但沒有使用相同的結果。我正在處理的主要問題是使用$ uses變量時未包含模型類。我故意將錯誤放入我的模型中,並且「使用」它們的控制器不會報錯。 – 2011-01-30 17:56:13