با عرض سلام و خسته نباشید
مثلا در سایتی یک یوزر ثبت نام کرده و وارد پنل کاربری خودش میشه و تیکت یا مقاله ای ثبت میکنه .
ادمین سایت اقدام به حذف اون یوزر میکنه اما اون مقاله یا تیکتی که قبلا توسط اون کاربر ثبت شده هنوز هست
میخواستم بدونم چطور میتونم با حذف اون کاربر همه اون چیز هایی که بوجود آورده هم حذف بشه
باید بگم برای اینکار از پکیج iatstuti/laravel-cascade-soft-deletes استفاده کردم منتهی بقیه موارد ( بعنوان مثال کامنت های مقاله حذف شده هم حذف میشه ) به درستی کار میکنه بجز همین موضوعی که خدمتتون عرض کردم
ممنون میشم که من راهنمایی کنید
باتشکر
درود
شما به ۲ شکل میتونی این مشکل رو حل کنی:
در سطح دیتابیس رو دوستان توضیح دادند
مدل های الکوئنت، اونت های مخصوص خودشون رو دارند که اونت deleting هم جزشون هست
میتونی وقتی که یه کاربر حذف میشه
جداول دیگه رو چک کنی
هر جا user_id اون کاربر موجود بود
اون سطر رو حذف کنی
سلام وقت بخیر برای حل این مشکل باید توی هر ریلیشن (Relation) که می زنید ;onDelete('cascade') بزارید تا موقعی اون مقاله یا تیکتی که قبلا توسط اون کاربر ثبت شده پاک شود.
به مثال پایین که در migration اون مدل مثل article گذاشته میشه دقت نمایید
$table->integer('user_id')->unsigned()->nullable(true);
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
آرزوی موفقیت برای شما
HELPER FUNCTION
public function foreign_key ($feild, $nullable = false, $table = null, $type = 'unsignedInteger', $references = 'id', $cascade = 'cascade')
{
if ( is\_null( $table ) )
$table = Str::plural( Str::replaceLast('\_id', '', $feild) );
if ( $nullable )
$this->$type( $feild )->nullable();
else
$this->$type( $feild );
$this->foreign( $feild )
->references( $references )
->on( $table )
->onDelete( $cascade )
->onUpdate( $cascade );
}
MIGRATION ARTICLE
public function up()
{
/ start for have default Blueprint class /
$Schema = DB::connection()->getSchemaBuilder();
$Schema->blueprintResolver( function( $table, $callback ) {
return new Blueprint( $table, $callback );
});
/ end /
$Schema->create('articles', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->foreign_key('user_id', 'users');
$table->foreign_key('subject_id', true, 'subjects');
$table->string('title', 50);
$table->string('slug', 50);
$table->string('description', 255)->nullable();
$table->string('image');
$table->text('body');
$table->full_timestamps();
});
}
با عرض سلام چیزی که شما فرمودید من در این helper function رعایت کردم منتهی بازم کار نمیکنه
@Hamidev
ببینید شما باید engine دیتابیستون رو روی innoDB تنظیم کنید تا یه جدول باقابلیت ریلیشن داشته باشید یا مستقیم توی کانفیگ mysql تنظیم کنید یا توی همون مایگریشن بنویسید
$table->engine('innoDB')
سلام داداش، میشه وقتی جدول مقدار داره این engine رو عوض کرد؟از توی phpmyadmin
درود
شما به ۲ شکل میتونی این مشکل رو حل کنی:
در سطح دیتابیس رو دوستان توضیح دادند
مدل های الکوئنت، اونت های مخصوص خودشون رو دارند که اونت deleting هم جزشون هست
میتونی وقتی که یه کاربر حذف میشه
جداول دیگه رو چک کنی
هر جا user_id اون کاربر موجود بود
اون سطر رو حذف کنی
با عرض سلام خدمت دوستان ممنون که بنده رو راهنمایی کردید
@hossein.r.1442
@Hamidev
@ali.bayat
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟