وابستگیهای چند ریختی( Polymorphic Relation ) در سیستمهای ORM نوعی از ارتباط میان دو جدول هستند که تعداد نامحدودی از ردیفهای جدول دوم به تعداد نامحدودی از ردیفهای جدول اول مرتبط میشوند.
برای مثال تعداد نامحدودی از دانشآموزان هر یک میتوانند در تعداد نامحدودی از کلاسها ثبت نام کنند.
نگهداری ارتباط میان این دو جدول در ساختار پایگاه داده رابطهای( Relational Database ) در یک جدول واسط امکانپذیر است.
در لاراول این ارتباط با استفاده از دستور belongsToMany ایجاد و مورد استفاده قرار میگیرد.
برای مثال تعریف دسترسی به دانشآموزانی که در یک کلاس ثبت نام کردهاند به شکل زیر در مدل کدنویسی میشود:
public function Users() {
return $this->belongsToMany( 'User', 'user_lessons', 'lesson_id', 'user_id' );
}
در هنگام استفاده از کد بالا، لازم است که یک جدول واسط با نام user_lessons حاوی دو فیلد lesson_id و user_id تعریف کنیم.public function Users() {
return $this->belongsToMany( 'User', 'user_lessons', 'lesson_id', 'user_id' )->withTimestamps();
}
اضافه شدن دستور withTimestamps به انتهای belongsToMany به لاراول میگوید که در هنگام ایجاد ارتباط، تاریخهای ثبت و به روزرسانی را نیز مانند سایر جدولها به این ارتباط پیوست کند.فیلدهای تاریخ ذخیره شده در این جدول واسط در هنگام مرتبسازی و خواندن اطلاعات به صورت زیر در دسترس خواهند بود:
$users = $class->Users()->latest( 'pivot_created_at' )->get();
در کد بالا، ثبت صریح نام فیلد created_at با پیشوند pivot الزامی است. در صوت ننوشتن نام این فیلد یا پیشوند نکردن آن با pivot، اگر جدول کاربران حاوی فیلدی با نام created_at باشد، مشکلاتی از جمله تداخل و خطای نحوی پایگاه داده ایجاد خواهد شد.
برچسب: مرتب سازی برنامه های اندروید,مرتب سازی بر اساس حروف الفبا,برنامه مرتب سازی ادغامی,برنامه مرتب سازی حبابی,برنامه مرتب سازی حبابی در c,برنامه مرتب سازی سریع,برنامه مرتب سازی انتخابی در c,برنامه مرتب سازی سریع در c,انواع مرتب سازی در برنامه نویسی,برنامه مرتب سازی انتخابی,
نویسنده: میلاد پارسامنش