我创建了2个表的课程和学生并插入数据,当从那2个表中返回数据时(这些表中的外键关系),它提供了我所有的数据,但名称列在学生和课程表中是相同的,当我显示名称时,它仅显示课程名字,但我要学生和课程名
这是我的控制器代码
public function index()
{
$data = DB::table('students')
->join('courses', function($join)
{
$join->on('students.course_id', '=', 'courses.course_id')
->where('courses.course_id', '=', 101);
})
->get();
// dd($data);
return view('student.home', compact('data'));
}
显示代码
@foreach($data as $d)
{{ $d->roll_no }}
{{ $d->name }}
<br>
@endforeach
课程表迁移
public function up()
{
Schema::create('courses', function (Blueprint $table) {
// $table->increments('id');
$table->string('course_id');
$table->string('name');
$table->string('credit_hour');
$table->timestamps();
$table->primary('course_id');
});
}
学生表迁移
public function up()
{
Schema::create('students', function (Blueprint $table) {
// $table->increments('id');
$table->string('roll_no');
$table->string('name');
$table->string('email');
$table->string('address');
$table->string('course_id');
$table->timestamps();
$table->primary('roll_no');
$table->foreign('course_id')->references('course_id')->on('courses')->onDelete('cascade');
});
}
我如何显示课程名称和学生姓名
最佳答案
您可以将自定义选择添加到查询构建器,然后重命名现有列,以防止结果中排除列。
例:
DB::table('students')
->select(['*', DB::raw('students.name as student_name')])
->join(....
您可以像以下方式访问此属性:
@foreach ($data as $d)
{{ $d->student_name }}
@endforeach
在foreach中使用dd($ d)并查看您现在可以访问哪些属性。
关于php - 加入laravel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37438620/