View Full Version : ثبت داده در جدول واسط
imohammad
یک شنبه 14 تیر 1394, 12:54 عصر
سلام
من دوتا جدول دارم:
students: id - name
courses: id - name
و یه جدول واسط دارم
student_course: id - student_id - course_id - num
که توی جدول واسط num وظیفهٔ نگهداری نمرهٔ هر دانش آموز از هر درس رو داره
حالا سوال اینه چطوری نمره رو تو جدول واسط ذخیره کنم و چطوری فراخوانی کنم نمرات هر دانش آموز به تفکیک درس رو؟
ممنون
djtrex
یک شنبه 14 تیر 1394, 17:10 عصر
سلام
من دوتا جدول دارم:
students: id - name
courses: id - name
و یه جدول واسط دارم
student_course: id - student_id - course_id - num
که توی جدول واسط num وظیفهٔ نگهداری نمرهٔ هر دانش آموز از هر درس رو داره
حالا سوال اینه چطوری نمره رو تو جدول واسط ذخیره کنم و چطوری فراخوانی کنم نمرات هر دانش آموز به تفکیک درس رو؟
ممنون
اگه این رابطه شما در مدل Student باشه:
public function courses()
{
return $this->belongsToMany(Course::class, 'student_course')->withPivot('num');
}
(با with pivot میتونید فیلد های مورد نظر خودتونو از جدول واسط نشون بدید- آرگومان دوم belongsToMany به خاطر اینه که به ترتیب حروف الفبا جدول واسط رو نساختید (course_student) در نتیجه باید به لاراول بگید جدول واسط چی هست.)
با این روش میتونید نمرات درس های یه دانش آموز رو نشون بدید:
$student = Student::find($id);
foreach($student->courses as $course){
echo $course->pivot->num;
}
آبجکت pivot همان جدول واسط شماست.
======
برای insert هم اگه یدونه درس هست:
$student = Student::find($id);
$student->courses()->attach($courseId, ['num' => 18]);
اگه چند تا درس هست:
$student->courses()->attach(
[
1 => ['num' => 18],
2 => ['num' => 15.25],
3 => ['num' => 10]
]
);
کلید ها آی دی درس ها هست.
اطلاعات بیشتر:
http://laravel.com/docs/master/eloquent-relationships
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.