آفلاین
user-avatar

سوال در مورد جداول چند به چند و یک به چند در لاراول

10 ماه پیش
توسط mahdi آپدیت شد
آفلاین
user-avatar
mahdi ( 9127 تجربه )
3 سال پیش
تخصص : برنامه نویس ...

سلام
من تازه از فریم ورک سیمفونی به لاراول مهاجرت کردم.
سوالی که برام پیش اومده اینه که وقتی تو سیمفونی روابط جداول رو تعیین می کردیم، روابط در خود MySQL اعمال می شد ولی در لاراول دیدم در PHPMyAdmin هیچ تفاوتی در جداول نمی بینم انگار که روابط تنها در Eloquent وجود دارند و در MySQL چنین روابطی وجود نداره.
آیا من درست متوجه شدم؟ و در صورت صحت آیا این قضیه بازدهی دیتابیس رو پایین نمیاره؟

بهترین پاسخ انتخاب شده توسط mahdi
آفلاین
user-avatar
علی بیات
10 ماه پیش

عملکرد ORM های این دو فریم ورک با هم متفاوته..

Doctrine روابط رو در خود جدول ها اعمال میکنه
Eloquent از طریق PHP این کارو انجام میده

بازدهی وقتی پایین میاد که در حین استفاده از الکوئنت از Best Practice ها پیروی نکنیم... عملکرد الکوئنت می‌تونه در برخی موارد عجیب باشه اما اگر به نحو درست ازش استفاده بشه، مشکلی پیش نمیاد

آفلاین
user-avatar
developer ( 33462 تجربه )
3 سال پیش
تخصص : برنامه نویس

من سیمفونی رو ندیدم که منظورتون رو بفهمم ولی توی لاراول روابط اگه یک به چند باشه که با درج مثلا user_id برمیگرده ولی اگه چند به چند باشه توی جدول واسط(primary) میاد

آفلاین
user-avatar
mahdi ( 9127 تجربه )
3 سال پیش
تخصص : برنامه نویس ...

مثل ارتباط FOREIGN KEY به PRIMARY KEY که در FrameWork های دیگه تعیین میشوند ولی در لاراول نمی دونم چرا ایجاد نمی شوند.

آفلاین
user-avatar
محمد امیر محمدی ( 2633 تجربه )
3 سال پیش
تخصص : برنامه نویس لاراول و ویو جی اس

در لاراول همه روابط رو میشه ایجاد کرد
داخل میگریشن شما روابط رو برقرار کنید و یک نمونه کد از کلید خارجی ببینید حتما متوجه میشوید.

آفلاین
user-avatar
mahdi ( 9127 تجربه )
3 سال پیش
تخصص : برنامه نویس ...

متوجه هستم ولی این روابط در MySQL ایجاد نمی شه. من Export گرفتم از اطلاعات دیتابیس ولی این روابط رو اصلا ندیدم و این روابط علی الظاهر فقط منحصر به Eloquent است.

آفلاین
user-avatar
Seyyed AMir ( 70 تجربه )
10 ماه پیش

در migration ها باید این روابط را تعریف کنی که درون دیتابیس براشون کلید خارجی ایجاد بشه

نمونه

Schema::table('money_boxes', function($table) {
$table->foreign('creator_id')->references('id')->on('users')->onDelete('no action');
});

آفلاین
user-avatar
علی بیات ( 371338 تجربه )
10 ماه پیش
تخصص : توسعه دهنده ارشد وب

عملکرد ORM های این دو فریم ورک با هم متفاوته..

Doctrine روابط رو در خود جدول ها اعمال میکنه
Eloquent از طریق PHP این کارو انجام میده

بازدهی وقتی پایین میاد که در حین استفاده از الکوئنت از Best Practice ها پیروی نکنیم... عملکرد الکوئنت می‌تونه در برخی موارد عجیب باشه اما اگر به نحو درست ازش استفاده بشه، مشکلی پیش نمیاد

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