common\models\Post Object ( [cat] => [file] => [time_create] => [datefarsi] => [tag] => [_attributes:yii\db\BaseActiveRecord:private] => Array ( [id] => 977 [title] => trigger در mysql [body] =>

به طور مثال اگر بخواهیم محصولی را از جدول product پاک کنیم باید همه اطلاعات مربوط با آن محصول از جداول دیگر مانند product_order و product item حذف شود.

برای این کار باید storage engine همه ی این جداول از نوع innodb باشد (در تب Operations)

سپس در تب structure جداول  product_order و product item برای برقراری ارتباط با جدول product گزینه relation views را انتخاب میکنیم.

در قسمت Constraint properties قسمت column فیلدی از جدول را وارد میکنیم که id جدول product را نگه میدارد و سه ستون دیگر مربوط به جدول product است و در نهایت فیلد id جدول product را انتخاب میکنیم. 

حالا در جدول product وارد تب triggers میشویم و یک trigger اضافه میکنیم. time را before و action را delete انتخاب میکنیم تا قبل از پاککردن یک product اطلاعات مربوطه اش را از جداول دیگر پاک کند. و در آخر defenition را به صورت زیر مینویسیم:

BEGIN
delete from product_item where product_id = OLD.id;
delete from product_order where product_id = OLD.id;
END

[date] => 2019-10-28 09:24:59 [file_path] => [thumb_nail] => uploads/K3A0xa2UGN1pWzz.png [summery] => پاک کردن همزمان یک رکورد به همراه همه رکورد های مربوطه از جداول دیگر [pic] => [link] => [slug] => trigger-در-mysql [author_id] => 9 [author] => ) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ( [id] => 977 [title] => trigger در mysql [body] =>

به طور مثال اگر بخواهیم محصولی را از جدول product پاک کنیم باید همه اطلاعات مربوط با آن محصول از جداول دیگر مانند product_order و product item حذف شود.

برای این کار باید storage engine همه ی این جداول از نوع innodb باشد (در تب Operations)

سپس در تب structure جداول  product_order و product item برای برقراری ارتباط با جدول product گزینه relation views را انتخاب میکنیم.

در قسمت Constraint properties قسمت column فیلدی از جدول را وارد میکنیم که id جدول product را نگه میدارد و سه ستون دیگر مربوط به جدول product است و در نهایت فیلد id جدول product را انتخاب میکنیم. 

حالا در جدول product وارد تب triggers میشویم و یک trigger اضافه میکنیم. time را before و action را delete انتخاب میکنیم تا قبل از پاککردن یک product اطلاعات مربوطه اش را از جداول دیگر پاک کند. و در آخر defenition را به صورت زیر مینویسیم:

BEGIN
delete from product_item where product_id = OLD.id;
delete from product_order where product_id = OLD.id;
END

[date] => 2019-10-28 09:24:59 [file_path] => [thumb_nail] => uploads/K3A0xa2UGN1pWzz.png [summery] => پاک کردن همزمان یک رکورد به همراه همه رکورد های مربوطه از جداول دیگر [pic] => [link] => [slug] => trigger-در-mysql [author_id] => 9 [author] => ) [_related:yii\db\BaseActiveRecord:private] => Array ( ) [_relationsDependencies:yii\db\BaseActiveRecord:private] => Array ( ) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array ( ) [_eventWildcards:yii\base\Component:private] => Array ( ) [_behaviors:yii\base\Component:private] => Array ( ) )
An Error occurred while handling another error:
yii\web\HeadersAlreadySentException: Headers already sent in /home/avishost/public_html/frontend/controllers/PostController.php on line 75. in /home/avishost/public_html/vendor/yiisoft/yii2/web/Response.php:366
Stack trace:
#0 /home/avishost/public_html/vendor/yiisoft/yii2/web/Response.php(339): yii\web\Response->sendHeaders()
#1 /home/avishost/public_html/vendor/yiisoft/yii2/web/ErrorHandler.php(136): yii\web\Response->send()
#2 /home/avishost/public_html/vendor/yiisoft/yii2/base/ErrorHandler.php(123): yii\web\ErrorHandler->renderException(Object(yii\base\ErrorException))
#3 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\ErrorException))
#4 {main}
Previous exception:
yii\base\ErrorException: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent in /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php:399
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleError(2, 'session_set_coo...', '/home/avishost/...', 399, Array)
#1 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(399): session_set_cookie_params(Array)
#2 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(135): yii\web\Session->setCookieParamsInternal()
#3 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(630): yii\web\Session->open()
#4 /home/avishost/public_html/vendor/yiisoft/yii2/web/Session.php(769): yii\web\Session->get('__flash', Array)
#5 /home/avishost/public_html/common/widgets/Alert.php(51): yii\web\Session->getAllFlashes()
#6 /home/avishost/public_html/vendor/yiisoft/yii2/base/BaseObject.php(109): common\widgets\Alert->init()
#7 [internal function]: yii\base\BaseObject->__construct(Array)
#8 /home/avishost/public_html/vendor/yiisoft/yii2/di/Container.php(392): ReflectionClass->newInstanceArgs(Array)
#9 /home/avishost/public_html/vendor/yiisoft/yii2/di/Container.php(159): yii\di\Container->build('common\\widgets\\...', Array, Array)
#10 /home/avishost/public_html/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get('common\\widgets\\...', Array, Array)
#11 /home/avishost/public_html/vendor/yiisoft/yii2/base/Widget.php(137): yii\BaseYii::createObject(Array)
#12 /home/avishost/public_html/frontend/views/layouts/main.php(294): yii\base\Widget::widget()
#13 /home/avishost/public_html/vendor/yiisoft/yii2/base/View.php(348): require('/home/avishost/...')
#14 /home/avishost/public_html/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/home/avishost/...', Array)
#15 /home/avishost/public_html/vendor/yiisoft/yii2/base/Controller.php(401): yii\base\View->renderFile('/home/avishost/...', Array, Object(frontend\controllers\PostController))
#16 /home/avishost/public_html/vendor/yiisoft/yii2/base/Controller.php(387): yii\base\Controller->renderContent('\n<!--end loadin...')
#17 /home/avishost/public_html/frontend/controllers/PostController.php(84): yii\base\Controller->render('view', Array)
#18 [internal function]: frontend\controllers\PostController->actionView('977')
#19 /home/avishost/public_html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#20 /home/avishost/public_html/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#21 /home/avishost/public_html/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('view', Array)
#22 /home/avishost/public_html/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('post/view', Array)
#23 /home/avishost/public_html/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#24 /home/avishost/public_html/frontend/web/index.php(21): yii\base\Application->run()
#25 {main}