محسن رجبی
8 ماه پیش توسط محسن رجبی مطرح شد
2 پاسخ

تغییر foreignId به عنوان اصلی

سلام
دوستان من داخل دیتابیس foreignId به جدول دیگری دارم.
حال موقع نمایش به جای اینکه name اصلی قرار بگیره آی دی قرار میگیره

چطور میشه آی دی foreignId رو داخل جدول اصلیش پیدا کنم و عنوان اصلی رو درون جدول قرار بدم؟
هرکدی که میزنم خطا دارم و درست نمیشه
نسخه لاراول 10 استفاده میکنم.
 تصویر


ثبت پرسش جدید
سینا شاه‌اویسی
تخصص : برنامه نویس فرانت اند
@sinashahoveisi 8 ماه پیش مطرح شد
0

سلام
برای نمایش نام‌های مرتبط با آی دی‌های foreign key می‌توانید از روابط Eloquent و همچنین استفاده از تابع‌های with() و join() استفاده کنید. مثلا به این شکل:
اگر جدول کلاس‌ها (Classes) دارای فیلدهای teacher_id و course_id بود، مدل کلاس‌ها به این صورت خواهد بود:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Class extends Model
{
    public function teacher()
    {
        return $this->belongsTo(Teacher::class);
    }

    public function course()
    {
        return $this->belongsTo(Course::class);
    }
}

برای مدل استاد (Teacher):

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Teacher extends Model
{
    public function classes()
    {
        return $this->hasMany(Class::class);
    }
}

برای مدل درس (Course):

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
    public function classes()
    {
        return $this->hasMany(Class::class);
    }
}

حالا می‌توانید از تابع with() برای زمانی که اطلاعات را از پایگاه داده بخوانید، استفاده کنید تا اطلاعات مرتبط را هم بخوانید:

use App\Models\Class;

$classes = Class::with('teacher', 'course')->get();
foreach ($classes as $class) {
    echo "Class: {$class->course->name}, Teacher: {$class->teacher->name}";
}

سامان صالحی محمدی
تخصص : برنامه نویس وب
@samansle 8 ماه پیش مطرح شد
0

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


سینا شاه‌اویسی
تخصص : برنامه نویس فرانت اند
@sinashahoveisi 8 ماه پیش مطرح شد
0

سلام
برای نمایش نام‌های مرتبط با آی دی‌های foreign key می‌توانید از روابط Eloquent و همچنین استفاده از تابع‌های with() و join() استفاده کنید. مثلا به این شکل:
اگر جدول کلاس‌ها (Classes) دارای فیلدهای teacher_id و course_id بود، مدل کلاس‌ها به این صورت خواهد بود:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Class extends Model
{
    public function teacher()
    {
        return $this->belongsTo(Teacher::class);
    }

    public function course()
    {
        return $this->belongsTo(Course::class);
    }
}

برای مدل استاد (Teacher):

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Teacher extends Model
{
    public function classes()
    {
        return $this->hasMany(Class::class);
    }
}

برای مدل درس (Course):

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
    public function classes()
    {
        return $this->hasMany(Class::class);
    }
}

حالا می‌توانید از تابع with() برای زمانی که اطلاعات را از پایگاه داده بخوانید، استفاده کنید تا اطلاعات مرتبط را هم بخوانید:

use App\Models\Class;

$classes = Class::with('teacher', 'course')->get();
foreach ($classes as $class) {
    echo "Class: {$class->course->name}, Teacher: {$class->teacher->name}";
}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام