Laravel 4显示了从一对一关系中的所有领域

时间:2014-08-21 16:09:21

标签: php laravel relationship

我正试图从一对一的关系中显示所选行的所有字段......

路线

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;
});

任何人都可以帮我展示一对一关系的所有领域

或者我真的要把它改成一对多的关系?因为如果我将它改为一对多关系,它就可以了

1 个答案:

答案 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)。