Skip to content
This repository has been archived by the owner on Nov 23, 2023. It is now read-only.

fantgeass/deletable-behavior

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

Deletable behavior helps delete many models with all relations in one shot.

  • Batch deleting
  • Foreign keys actions emulation (CASCADE, RESTRICT)
  • Events supports
  • Composite keys supports
  • Transaction supports

##Requirements Tested on Yii 1.1.10

##Usage We have 3 models. User HAS MANY Comment. User HAS MANY Like. Comment HAS MANY Like.

[php]

// User model
public function behaviors()
{
	return CMap::mergeArray(parent::behaviors(), array(
		 'deletable' => array(
			 'class' => 'ext.deletable-behavior.DeletableBehavior',
			 'relatives' => array(
				 'comments' => DeletableBehavior::CASCADE,
				 'likes'    => DeletableBehavior::CASCADE,
			 )
		 )
	));
}

// Comment model
public function behaviors()
{
	return CMap::mergeArray(parent::behaviors(), array(
		 'deletable' => array(
			 'class' => 'ext.deletable-behavior.DeletableBehavior',
			 'relatives' => array(
				 'likes'    => DeletableBehavior::CASCADE
			 )
		 )
	));
}

// Like model
public function behaviors()
{
	return CMap::mergeArray(parent::behaviors(), array(
		 'deletable' => array(
			 'class' => 'ext.deletable-behavior.DeletableBehavior',
		 )
	));
}


// event in User model
public function beforeBatchDelete($event)
{
	$batchIds = $event->sender->getBatchIds();
	foreach ($batchIds as $id)
	{
		// delete avatar img
	}
}


// all related Comments and Likes will be deleted too
User::model()->batchDelete(array(1,2,3,4)); 

Behavior must be enabled for all models, that using batch deleting. I recommend include behavior for all models in parent model "ActiveRecord".

##Resources

About

Deletable Behavior

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages