ノンカフェインであなたにやさしい

Rails,HTML,JavaScript,jQuery,PHP,CakePHPなど

【CakePHP】モデルのリレーションを外す

hasOne,hasMany,belongsTo,hasAndBelongsToManyのリレーションを簡単に実装できるCakePHPのモデルですが一時的にリレーションデータが不要になった場合の外し方です。

以下の様なモデルがあったとします。

<?php
class User extends AppModel
{
	var $name = 'User';
	var $hasMany = array(
		'Comment' => array(
			'className' => 'Comment',
			'conditions' => 'Comment.moderated = 1',
			'order' => 'Comment.created DESC',
			'foreignKey' => 'user_id',
		)
	);
}
?>

このモデルからリレーションを外すにはfindする前に以下の処理をします。

this->User->unbindModel(
	array(
		'hasMany' => array('Comment')
	)
);

データ量が多く処理が重くなる場合や不要なときなどはリレーションを外したほうがいいかもしれませんね。