رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ثبت داده در جدول واسط
#1
سلام
من دوتا جدول دارم:
students: id - name
courses: id - name
و یه جدول واسط دارم
student_course: id - student_id - course_id - num
که توی جدول واسط num وظیفهٔ نگهداری نمرهٔ هر دانش آموز از هر درس رو داره
حالا سوال اینه چطوری نمره رو تو جدول واسط ذخیره کنم و چطوری فراخوانی کنم نمرات هر دانش آموز به تفکیک درس رو؟

ممنون
پاسخ
#2
برای اینکار باید از رابطه چند به چند Eloquent استفاده کنید. خیلی خلاصه مثال میزنم:

مدل Student
کد پی‌اچ‌پی:
<?php

namespace app;

use 
Illuminate\Database\Eloquent\Model;

class 
Student extends Model
{

 public function 
courses()
 {
 return 
$this->belongsToMany(Course::class, 'student_course');
 }



مدل Course
کد پی‌اچ‌پی:
<?php

namespace app;

use 
Illuminate\Database\Eloquent\Model;

class 
Course extends Model
{

 public function 
users()
 {
 return 
$this->belongsToMany(Student::class, 'student_course');
 }



حالا فرض کنید دو تا نمونه از این دو مدل داریم، برای پر کردن سایر فیلدهای جدول واسط (student_course) می‌تونید به شکل آرایه  به پارامتر دوم متد attach پاس بدین

کد پی‌اچ‌پی:
<?php

// Example value for variables
$user User::find(1);
$course Course::find(1);
$num 18;

$user->course()->attach($course->id, ['num' => $num]);
// or
// $course->users($user->id, ['num' => $num]); 

با اجرای این کد جدول به شکل زیر پر میشه

کد:
+-----+--------------+------------+--------+
| id  | student_id   | course_id | num     |
+-----+--------------+------------+--------+
| 1   | 1            | 1          | 18     |
+-----+--------------+------------+--------+

اگر بخواین برای یه دانش‌آموز چند درس با یه نمره ثابت (یا برای یه درس چند دانش‌آموز با یه نمره ثابت)  ثبت کنید می‌تونید به این شکل کار کنید:

کد پی‌اچ‌پی:
<?php

// insert many course for a user
$user->courses()->attach($arrayOfCourseIds, ['num' => $num]);

// insert many user for a course
$course->user()->attach($arrayOfUserIds, ['num' => $num]); 

نتیجه به این شکل میشه (برای حالت اول)

کد:
+-----+--------------+------------+--------+
| id  | student_id   | course_id | num     |
+-----+--------------+------------+--------+
| 1   | 1            | 1          | 18     |
| 1   | 1            | 2          | 18     |
| 1   | 1            | 3          | 18     |
| 1   | 1            | 4          | 18     |
| 1   | 1            | 5          | 18     |
| 1   | 1            | 6          | 18     |
+-----+--------------+------------+--------+
Senior PHP & Laravel Developer | Software Architecture

[عکس: __Twitter.png]       [عکس: __Linkedin.png]

weblog | Codecasts
پاسخ
 


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل در ارسال داده به پایگاه داده 111r11v11n 2 64 10-31-2016, 05:23 AM
آخرین ارسال: LavarelUser
  مشکل با داده های بسیار بزگ در لاراول wesliacliopi 0 65 08-18-2016, 04:17 PM
آخرین ارسال: wesliacliopi
  ایجاد کنترلر جدا برای ارسال داده های منو داینامیک AMIR.EMAIL@YAHOO.COM 1 100 12-31-2015, 09:26 PM
آخرین ارسال: amirhosseini
  ارتباط یک جدول با چند جدول delete 0 265 09-05-2015, 04:38 PM
آخرین ارسال: delete
  دسترسی به رکوردهای خاص در هنگام استفاده از جدول pivot arashmanteghi 2 238 08-17-2015, 07:13 PM
آخرین ارسال: arashmanteghi
  بایند در روتز و پاس داده به متد سازنده کنترلر allahyar 2 198 07-04-2015, 11:52 PM
آخرین ارسال: allahyar
  seed نشدن داده در جدول کاربران error 2 239 06-03-2015, 05:21 AM
آخرین ارسال: alihossein

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

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

انجمن لاراولیستا به عشق توسعه دهنده ها و علاقمندان به این فریم ورک محبوب ایجاد شده و امیدواریم با نظرات خوبتون ما رو در بهبود کار یاری کنید. در ضمن خیلی هم خوشحال میشیم شما هم در توسعه این انجمن سهمی داشته باشید.