FirstTable
id |名字|
1 | student1 |
2 | student2 |
3 | student3 |
4 | student4 |
==============================
SecondTable
Id | stud_id |主题|标记
1 | 1 |数学| 50
2 | 1 |英语| 45
3 | 2 |数学| 20
4 | 3 |数学| 40
我如何使用上面的表结构在laravel中查询.. 我需要outpus
{
"id": 1,
"name":"student1"
"marks":[
{
"subject":"maths",
"marks":50,
},
{
"subject":"emglish",
"marks":45,
}
]
}
答案 0 :(得分:1)
我在Laravel Query Builder中完成了它。 请参阅下文。
$stud = DB::table('FirstTable')
->join('SecondTable','FirstTable.id','=','SecondTable.stud_id')
->where('FirstTable.id','=','1')
->get();
dd($stud);
答案 1 :(得分:0)
我正在以雄辩的方式做到这一点。在您的学生模型中创建关系方法。这是一个学生可以有很多主题关系
public function subject(){
return $this->hasMany('App\"the second table model name",'stud_id');
}
然后你在控制器中就可以像
一样访问它public function index(){
$student = Student::find("Student_id")->subject;
dd($student);
}
请阅读文档以便更好地理解 https://laravel.com/docs/5.5/eloquent-relationships
答案 2 :(得分:0)
您可以与这些表创建关系。在这里你需要一对多的关系。
你需要学生,课程表
学生
Schema::create('students', function (Blueprint $table) {
$table->increments('id');
$table->string('student_name')
});
吸取
Schema::create('lessons', function (Blueprint $table) {
$table->increments('id');
$table->integer('student_id');
$table->integer('exam_number'); // there will be many exams right ?
$table->integer('lesson1')
$table->integer('lesson2');
$table->integer('lesson-etc');
$table->timestamps();
$table->foreign('student_id')->references('id')->on('students')
});
然后按以下方式编辑模型
学生模特;
public function lessons(){
return $this->hasMany('App\Lesson','student_id','id');
}
并在你的课程模型中;
public function students(){
return $this->belongsTo('App\Student');
}
然后在你的控制器中,
$students = Student::whereHas('lessons', function ($query) {
$query->where("exam_number", 2 (or which exam));
})->get();
最后,在你的刀片中;
<table >
<tr>
<th>Student Name</th>
<th>Lesson 1</th>
<th>Lesson 2</th>
</tr>
@foreach($students as $student)
<tr>
<td>{{$student->student_name}}</td>
<td>{{$student->lessons->lesson1}}</td>
<td>{{$student->lessons->lesson2}}</td>
</tr>
@endforeach
</table>
这应该是工作