سلام دوستان . من دو تا جدول دارم با فیلدهای زیر
student(id,name,teacher_id)
و جدول دوم
teacher(id,name,age)
میخوام یک کوئری بزنم که دانش آموزانی که سن معلم آنها بیشتر از 30 سال است را برگرداند . متاسفانه نتونستم لطف میکنید راهنمائی کنین ؟ ممنونم
@samanf33
با سلام . ریلیشن رو توی مدلتون تعریف کردین ؟ اگر درست تعریف کردین به اینصورت میتونید شرطتونو برقرار کنید :
$student = Student::findOrFail(1);
$student->teacher()->where('age' , '>' , 30)->get();
در واقع اون teacher
اسم رابطه هست با جدول teacher که قاعدتا توی مدل student تعریف کردین . اگر یک به یک هست رابطه که مشکلی نیست اگر یک به چنده و یک دانشجو میتونه چند معلم داشته باشه بهتره ریلیشن رو جمع بنویسید . بصورت teachers
اگر توی تعریف رابطه مشکلی بود مطرح کنید . موفق باشید
کد زیر را نوشتم استفاده کنید
در خط 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();
چون دیدم دستور join را ننوشتید اون کد را نوشتم براتون که براتون راحت باشه
بله laravel دستورات مخصوص relation داره که از توابعی مثل hasMany و morphToMany و ... استفاده میکنه
در لینک زیر آموزش کاملشون هست
https://laravel.com/docs/7.x/eloquent-relationships
@samanf33
با سلام . ریلیشن رو توی مدلتون تعریف کردین ؟ اگر درست تعریف کردین به اینصورت میتونید شرطتونو برقرار کنید :
$student = Student::findOrFail(1);
$student->teacher()->where('age' , '>' , 30)->get();
در واقع اون teacher
اسم رابطه هست با جدول teacher که قاعدتا توی مدل student تعریف کردین . اگر یک به یک هست رابطه که مشکلی نیست اگر یک به چنده و یک دانشجو میتونه چند معلم داشته باشه بهتره ریلیشن رو جمع بنویسید . بصورت teachers
اگر توی تعریف رابطه مشکلی بود مطرح کنید . موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟