අද අපි බලමු laravel වල database tables join කරන්නනේ කියලා. joins, laravel වල DB class එක use කරගෙන කරන්න පුළුවනි. හැබයි එතකොට select, joins, ඔක්කොම අපි ලියන්න ඕන.
නමුත් Eloquent model එක use කරගෙන joins ලේසියෙන්ම කරන්න පුළුවන්.
https://laravel.com/docs/5.2/eloquent-relationships
දැන් බලමු මොනවද use කරන tables කියලා.
Student :
ID
|
Name
|
NIC
|
Birthday
|
Address
|
Email
|
Telphone
|
Password
|
Auto Generated
Not Null
|
Not Null
|
Not Null
|
Not Null
|
|
|
|
MD5 Encrypted
Not Null
|
Exams:
ID
|
Exam Code
|
Exam Name
|
Exam Fee
|
Status
|
Auto Generated
Not Null
|
Not Null
|
Not Null
|
Not Null
|
Not Null
|
ExamRegistration:
ID
|
ExamID
|
ExamDate
|
Primary Key
Auto generated
Not Null
|
References Exam (ExamID)
Not Null
|
Not Null
|
StudentExamRegistration:
ID
|
ExamRegID
|
StudentID
|
Date Registered
|
Grade Obtain
|
Status
|
IsPostpone
|
Primary Key
Auto generated
Not Null
|
References ExamRegistration
(RegID)
Not Null
|
References Student(StudentID)
Not Null
|
Not Null
|
Null
|
Not Null
|
Bit
Not Null
|
laravel migrations use කරගෙන ඉහත දක්වා ඇති tables හදාගන්න ඕන. migrations භාවිතා කරගෙන database tables හදන මම කලින් posts වලින් කියලා දුන්නා. තව එකක් තියෙනවා කියන්න මේ user table එක larevel authentication වලට හදන table එකමයි. laravel authentication කරන විදියත් මම කලින් posts එකක කියලා දුන්නා. laravel authentication වලට භාවිතා කරන table එකටම අපේ fields එකතු කරන්න. වෙන විදියකට කිව්වොත් migration වල තියෙන user migration එකට අපේ fields එකතු කරන්න.
ඊට පස්සේ එම එක් එක් tables සදහා models හදාගන්න ඕන. ඒවා මේ විදියට වෙනස් කරන්න.
User.php model:
namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; use StudentExamRegistrations; class User extends Authenticatable { protected $fillable = [ 'name', 'nic','birthday','address', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; public function studentExams() { return $this->hasMany('App\StudentExamRegistrations','student_id'); }Exams.php model
namespace App; use Illuminate\Database\Eloquent\Model; class Exams extends Model { protected $table = 'exams'; protected $fillable=[ 'exam_code', 'exam_name', 'exam_fee', 'status', ]; public function studentExams() { return $this->belongsToMany('App\ExamRegistration','exam_id'); } }ExamRegistration.php model:
namespace App; use Illuminate\Database\Eloquent\Model; //use StudentExamRegistrations; class ExamRegistration extends Model { protected $table = 'exam_registration'; protected $fillable=[ 'exam_id', 'exam_date', ]; public function studentExams() { return $this->belongsToMany('App\StudentExamRegistrations','exam_reg_id'); } public function ExamDetail(){ return $this->belongsTo('App\Exams','id'); } }StudentExamRegistrations.php model
namespace App; use Illuminate\Database\Eloquent\Model; class StudentExamRegistrations extends Model { protected $table = 'student_exam_registration'; protected $fillable=[ 'exam_reg_id', 'student_id', 'date_reg', 'grade', 'status', 'is_postpone', ]; public function user(){ return $this->belongsTo('App\User','id'); } public function ExamReg(){ return $this->belongsTo('App\ExamRegistration','id'); } }දැන් තියෙන්නේ අපේ controller එක හදාගන්න එක.
ExamsController.php
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\User; use App\StudentExamRegistrations; use App\Exams; use App\ExamRegistration; use Auth; class ExamsController extends Controller { public function myPendingExams() { $userId = Auth::id(); $email = Auth::user()->email; $datas1 = User::with('studentExams')->get(); $datas2 = StudentExamRegistrations::with(['user','ExamReg','ExamReg.ExamDetail'])->get(); $datas3 = User::with(['studentExams','studentExams.ExamReg','studentExams.ExamReg.ExamDetail'])->get(); $datas4 = Auth::User()->with(['studentExams','studentExams.ExamReg','studentExams.ExamReg.ExamDetail']) ->where('users.id', '=' ,$userId) ->get(); $datas5 = Auth::User()->with(['studentExams']) ->where('users.id', '=' ,$userId) ->get(); return ($datas5[0]->studentExams[0]->id); //return view('myExams',compact('datas5')); } }දැන් හරි...........
මේ ලිපිය ප්රයෝජනවත් කියලා හිතෙනවනම් මේ ලිපිය Share කරලා යාළුවන්ටත් කියන්න. Comment එකක් දාන්නත් අමතක කරන්න එපා. ජය වේවා..!!
0 comments:
Post a Comment