description

حذف اخبار و مقالات به همراه نظرات انها

- 4 روز پیش
توسط vahid Mohammadi آپدیت شد
مجتبی دلشاد ( 514 تجربه )
1 هفته پیش

دوستان من برای بخش نظرات مقاله و اخبار از یه تیبل استفاده میکنم
حالا میخوام اگه خبر یا مقاله ای حذف شد نظرات اون هم حذف بشه
این مایگریشن کامنت ها

        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->integer('parent_id')->unsigned()->default(0);
            $table->boolean('status')->default(0);
            $table->body('comment');
            $table->integer('commentable_id')->unsigned();
            $table->string('commentable_type');
            $table->timestamps();
        });

این کد رو بهش اضافه میکنم اما فقط برای مقالات اوکی میشه

            $table->foreign('commentable_id')->references('id')->on('articles')->onDelete('cascade');

اگه داخل on بیام و اخبار رو ب این صورت (,'new ''articles') اضافه کنم زمانی که کامنتی ارسال کنم کلا ارور میگیره
اگه هم همین خط کد رو برای اخبار هم بنویسم زمان میگریت شدن خطا میده
راه حلی دارید ممنون میشم راهنمایی کنید

بهترین پاسخ انتخاب شده توسط مجتبی دلشاد
vahid Mohammadi
1 هفته پیش

@m.delshad78
شما دارید از رابطه پلی مرفیک استفاده می کنید و امکان cascade delete به این شکل وجود نداره
برای اینکار باید مراحل زیر رو انجام بدین
در روت پروژه تون فرمان زیر رو اجرا کنید تا پکیج مورد نظر نصب بشه:

 composer require shiftonelabs/laravel-cascade-deletes

بعد باید در مدل های مقالات و اخبار و نظرات کد زیر رو وارد کنید:

use ShiftOneLabs\LaravelCascadeDeletes\CascadesDeletes;

بعد در مدل Articles تغییرات زیر رو بدقت اعمال کنید:

namespace App;

use Illuminate\Database\Eloquent\Model;
use ShiftOneLabs\LaravelCascadeDeletes\CascadesDeletes;

class Article extends Model {
    use CascadesDeletes;

    protected $cascadeDeletes = ['Comment''];

عینا همین تغییر رو برای مدل اخبار خودتون هم انجام بدید.
می تونید توضیحات تکمیلی رو هم در گیت هاب این پکیج بخونید.
نکته ‌: می تونید با استفاده از این پکیج سافت دیلیت رو هم پیاده سازی بفرمایید.

vahid Mohammadi ( 2903 تجربه )
1 هفته پیش

@m.delshad78
شما دارید از رابطه پلی مرفیک استفاده می کنید و امکان cascade delete به این شکل وجود نداره
برای اینکار باید مراحل زیر رو انجام بدین
در روت پروژه تون فرمان زیر رو اجرا کنید تا پکیج مورد نظر نصب بشه:

 composer require shiftonelabs/laravel-cascade-deletes

بعد باید در مدل های مقالات و اخبار و نظرات کد زیر رو وارد کنید:

use ShiftOneLabs\LaravelCascadeDeletes\CascadesDeletes;

بعد در مدل Articles تغییرات زیر رو بدقت اعمال کنید:

namespace App;

use Illuminate\Database\Eloquent\Model;
use ShiftOneLabs\LaravelCascadeDeletes\CascadesDeletes;

class Article extends Model {
    use CascadesDeletes;

    protected $cascadeDeletes = ['Comment''];

عینا همین تغییر رو برای مدل اخبار خودتون هم انجام بدید.
می تونید توضیحات تکمیلی رو هم در گیت هاب این پکیج بخونید.
نکته ‌: می تونید با استفاده از این پکیج سافت دیلیت رو هم پیاده سازی بفرمایید.

مجتبی دلشاد ( 514 تجربه )
1 هفته پیش

@viva.mohammadi
من بدون پکیج و با استفاده از این کد انجام دادم و اوکی شد بنظرتون مشکلی نداره؟


    protected static function boot()
    {
        parent::boot();

        static::deleting(function ($article) {

            $article->comments()->delete();
        });
    }
vahid Mohammadi ( 2903 تجربه )
4 روز پیش

@m.delshad78
عالیه این پکیج هم دقیقا اینکارو انجام میده که شما انجام دادین

برای ارسال پاسخ باید وارد سایت شوید