سامان
5 سال پیش توسط سامان مطرح شد
4 پاسخ

relation

سلام دوستان . من دو تا جدول دارم با فیلدهای زیر

student(id,name,teacher_id)

و جدول دوم

teacher(id,name,age)  

میخوام یک کوئری بزنم که دانش آموزانی که سن معلم آنها بیشتر از 30 سال است را برگرداند . متاسفانه نتونستم لطف میکنید راهنمائی کنین ؟ ممنونم


ثبت پرسش جدید
سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 5 سال پیش آپدیت شد
1

@samanf33
با سلام . ریلیشن رو توی مدلتون تعریف کردین ؟ اگر درست تعریف کردین به اینصورت میتونید شرطتونو برقرار کنید :

$student = Student::findOrFail(1);
$student->teacher()->where('age' , '>' , 30)->get();

در واقع اون teacher اسم رابطه هست با جدول teacher که قاعدتا توی مدل student تعریف کردین . اگر یک به یک هست رابطه که مشکلی نیست اگر یک به چنده و یک دانشجو میتونه چند معلم داشته باشه بهتره ریلیشن رو جمع بنویسید . بصورت teachers
اگر توی تعریف رابطه مشکلی بود مطرح کنید . موفق باشید


نوب
تخصص : کدنویس نوب :)
@yk5742g 5 سال پیش مطرح شد
-1

کد زیر را نوشتم استفاده کنید
در خط where میتونید شرط را تغییر بدید
الا گذاشتم روی (مساوی و یا بزرگتر از 30)

$student = DB::table('student')
                ->join('teacher', 'teacher.id', '=', 'student.teacher_id')
                ->select('student.id', 'student.name', 'student.teacher_id', 'teacher.name', 'teacher.age')
                ->where('teacher.age','>=' ,'30')
                ->orderBy('student.id', 'DESC')->get();

سامان
@samanf33 5 سال پیش مطرح شد
0

ممنونم . ولی راه ساده تری که با relationهای لاراول بشه پیاده سازی کرد نیست ؟


نوب
تخصص : کدنویس نوب :)
@yk5742g 5 سال پیش مطرح شد
0

چون دیدم دستور join را ننوشتید اون کد را نوشتم براتون که براتون راحت باشه
بله laravel دستورات مخصوص relation داره که از توابعی مثل hasMany و morphToMany و ... استفاده میکنه
در لینک زیر آموزش کاملشون هست
https://laravel.com/docs/7.x/eloquent-relationships


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 5 سال پیش آپدیت شد
1

@samanf33
با سلام . ریلیشن رو توی مدلتون تعریف کردین ؟ اگر درست تعریف کردین به اینصورت میتونید شرطتونو برقرار کنید :

$student = Student::findOrFail(1);
$student->teacher()->where('age' , '>' , 30)->get();

در واقع اون teacher اسم رابطه هست با جدول teacher که قاعدتا توی مدل student تعریف کردین . اگر یک به یک هست رابطه که مشکلی نیست اگر یک به چنده و یک دانشجو میتونه چند معلم داشته باشه بهتره ریلیشن رو جمع بنویسید . بصورت teachers
اگر توی تعریف رابطه مشکلی بود مطرح کنید . موفق باشید


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

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