能否请您检查为什么这段代码在laravel中返回空结果。 我试图根据教师表中的国家/地区ID来获取国家/地区名称。
public function edit(Teacher $teacher)
{
$teachers= DB::table('teachers','nations')
->join('nations', 'teachers.nation_id', '=', 'nations.id')
->select('teachers.*')
->where('teachers.id',$teacher->id)
->first();
return view('teachers.create',['teachers' => $teachers]);
}
答案 0 :(得分:1)
检查此代码
public function edit(Teacher $teacher)
{
$teachers= DB::table('teachers')
->join('nations', 'teachers.nation_id', '=', 'nations.id')
->select('teachers.*','nations.name')
->where('teachers.id','=',$teacher->id)
->first();
return view('teachers.create',['teachers' => $teachers]);
}
答案 1 :(得分:1)
为什么需要使用查询构建器来执行这种不复杂的查询?
如果在Teacher
模型中添加关系方法,则可以更轻松地实现此目的。
因此,在您的Teacher
类中添加以下内容:
public function nation() {
return $this->belongsTo(Nation::class);
}
然后在您的控制器中可以像这样使用它:
$teacher->nation;
答案 2 :(得分:0)
如果您在教师表中允许country_id为空值或null, 您需要使用左连接来保留教师表中的所有记录:
public function edit(Teacher $teacher)
{
$teachers= DB::table('teachers','nations')
->leftJoin('nations', 'teachers.nation_id', '=', 'nations.id')
->select('teachers.*', 'nations.name')
->where('teachers.id',$teacher->id)
->first();
return view('teachers.create',['teachers' => $teachers]);
}