دوستان من برای بخش نظرات مقاله و اخبار از یه تیبل استفاده میکنم
حالا میخوام اگه خبر یا مقاله ای حذف شد نظرات اون هم حذف بشه
این مایگریشن کامنت ها
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') اضافه کنم زمانی که کامنتی ارسال کنم کلا ارور میگیره
اگه هم همین خط کد رو برای اخبار هم بنویسم زمان میگریت شدن خطا میده
راه حلی دارید ممنون میشم راهنمایی کنید
@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''];
عینا همین تغییر رو برای مدل اخبار خودتون هم انجام بدید.
می تونید توضیحات تکمیلی رو هم در گیت هاب این پکیج بخونید.
نکته : می تونید با استفاده از این پکیج سافت دیلیت رو هم پیاده سازی بفرمایید.
@viva.mohammadi
من بدون پکیج و با استفاده از این کد انجام دادم و اوکی شد بنظرتون مشکلی نداره؟
protected static function boot()
{
parent::boot();
static::deleting(function ($article) {
$article->comments()->delete();
});
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟