foreign('c ...' /> foreign('c ...' />
۵ Yousef Rishehri
ایجاد کلید خارجی
جامعه پی اچ پی ایجاد شده در ۲۰ تیر ۱۴۰۱

سلام چه فرقی بین این دوتاست هر دو یک کار رو انجام میدن و من فکر میکنم روش دوم خوانا‌تر و کوچکتر هم باشه

$table->unsignedBigInteger('category_id');
$table->foreign('category_id')
    ->references('id')
    ->on('categories')
    ->onDelete('cascade')
    ->onUpdate('cascade');

و این روش

$table->foreignId('category_id')
    ->constrained('categories', 'id')
    ->onDelete('cascade')
    ->onUpdate('cascade');

سلام دوست عزیز

میتونید از روش پایینی استفاده کنید

اما یکی از این‌ها ->onDelete('cascade'). ->onUpdate('cascade') رو استفاده کنید!

موفق باشید ?

محمد گازری ۲۰ تیر ۱۴۰۱، ۱۴:۴۲

بله ممنون چرا باید یکی از اینها رو استفاده کرد ؟!

Yousef Rishehri ۲۰ تیر ۱۴۰۱، ۱۴:۴۴

میتونید به شکل زیر هم استفاده کنید

$table->foreignId('book_id')->constrained('books')->cascadeOnDelete();
محمد گازری ۲۰ تیر ۱۴۰۱، ۱۴:۴۴

خب زمانیکه از delete استفاده میکنید یه تریگر ست میشه که دیتا‌های مربوطه رو دیلیت میکنه

و زمانیکه از update استفاده میکنید تریگری ست میشه که دیتای وابسته بجای حذف null میشه

کاربردها متفاوت هستن!

بهترین پاسخ
محمد گازری ۲۰ تیر ۱۴۰۱، ۱۴:۴۵

بله ممنون از توضیحات

$table->foreignId('book_id')->constrained('books')->cascadeOnDelete();

بله این چیزی که گفتین درسته ولی شاید شخصی به جای کلید id ست کرده باشه book_id حالا این چیز مهمی نیست سوال من در کل چیز دیگه ای بود میخواستم بدونم شاید مزیت خاصی داره اون جور تعریف کردن

بازم ممنون

Yousef Rishehri ۲۰ تیر ۱۴۰۱، ۱۴:۴۸

درصورت تغییر primary key در اون شرایط میتونید primary key رو در مدل تعریف کنید

موفق باشید ?

محمد گازری ۲۰ تیر ۱۴۰۱، ۱۴:۴۹