我正试图从一对一的关系中显示所选行的所有字段......
路线
Route::get('relasi-pasien', function()
{
$pasien = PasienIri::where('no_ipd', '=', '100')->first();
foreach($pasien->keadaanumum as $temp)
{
echo'<li>
Name : '.$temp->name.
'Tekdar: '.$temp->tekdar.
'Nadi : '.$temp->nadi.
'</li>';
}
});
PasienIri模型的关系
public function keadaanumum()
{
return $this->hasOne('KeadaanUmum', 'no_ipd');
}
KeadaanUmum模型的关系
public function pasieniri()
{
return $this->belongsTo('PasienIri', 'no_ipd');
}
当我使用这种方式时,它显示错误:'试图获得非对象的属性'
但是,如果我只是尝试只显示其中一个字段,那就可以了,
显示一个字段:
Route::get('relasi-pasien', function()
{
$pasien = PasienIri::where('no_ipd', '=', '100')->first();
return $pasien->keadaanumum->name;
});
任何人都可以帮我展示一对一关系的所有领域
或者我真的要把它改成一对多的关系?因为如果我将它改为一对多关系,它就可以了
答案 0 :(得分:1)
foreach($pasien->keadaanumum as $temp)
由于这是一对一的关系,因此您不应该foreach
超过它。试着改为:
echo
'<li>' .
'Name : ' . $pasien->keadaanumum->name .
'Tekdar: ' . $pasien->keadaanumum->tekdar .
'Nadi : ' . $pasien->keadaanumum->nadi .
'</li>'
;
您可以按照自己的说法进行操作并将其更改为一对多关系,但您很可能需要从KeadaanUmum
表中删除指向PasienIri
表的链接,因为意味着它只会与单个相关条目匹配。然而,这完全取决于您是否真的想要这样做(每个KeadaanUmum
允许许多PasienIri
)。