我正在建立Siswa(学生)和Kelas(班级)之间的关系模型,其中一个Kelas有很多学生(因此一对多)。这是代码:
Show.php视图
<tr>
<th>Kelas</th>
<td>{{$siswa->kelas->nama_kelas}}</td>
</tr>
Siswa.php模型
class Siswa extends Model
{
protected $table = 'siswa';
protected $fillable = [
'nisn',
'nama_siswa',
'tgl_lahir',
'jns_klmin',
'id_kelas',
'id_hobi',
];
public function kelas(){
return $this->belongsTo('App\Kelas', 'id_kelas');
}
}
Kelas.php模型
class Kelas extends Model
{
protected $table = 'kelas';
protected $fillable = [
'nama_kelas'
];
public function siswa(){
return $this->hasMany('App\Siswa', 'id_kelas');
}
}
我认为我已经相应地在模型Siswa中调用了方法kelas,但$ siswa-&gt; kelas-&gt; nama_kelas被定义为非对象。任何人都可以给予一些启发?任何帮助赞赏。
更新
这是节目控制器:
public function show(Siswa $siswa){
return view('siswa.show', compact('siswa'));
}
在show参数中我使用路由模型绑定来查找在RouteServiceProvider中传递的$ id,我修改了它:
public function boot(Router $router)
{
parent::boot($router);
$router->model('siswa', 'App\Siswa');
}
public function map(Router $router)
{
$router->group(['namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
require app_path('Http/routes.php');
});
//
}
答案 0 :(得分:2)
belongsTo()
方法将返回Illuminate\Database\Eloquent\Relations\BelongsTo
个实例。要获得Kelas
实例,您必须这样做:
$siswa->kelas->first()->nama_kelas
希望这有帮助!