2016-11-18 3 views
0

저는 House 모델과 energy_class 모델을 가지고 있습니다.Laravel Eloquent Relationship 정의되지 않은 속성

집에는 에너지 등급이 하나뿐입니다. 에너지 등급은 여러 주택에 배정 될 수 있습니다. 그래서 저는 이런 관계 정의 :

House.php을

class House extends Model 
{ 
    public function energy_class() 
    { 
     return $this->hasOne('App\energy_class', 'id', 'energy_class'); 
    } 
} 

energy_class.php

class energy_class extends Model 
{ 
    public function house() 
    { 
     return $this->belongsToMany('App\House'); 
    } 
} 

이 같은보기로 하우스 데이터를 전달 :

$house = House::with('energy_class')->find($id); 
return view('admin.houses.edit')->with('house', $house); 

그리고 이것을 다음과 같이 참조하십시오 :

0 이런 식으로 일을 할 때 Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$name

:

$house->energy_class()->name 

나는이 오류가 $house->energy_class->name 내가 trying to get property of non-object

+0

데이터베이스의 테이블 이름과 열 이름을 표시 할 수 있습니까? –

+0

테이블 :'house','energy_classes'. 컬럼 :'house.energy_class','energy_classes.name' – Scarwolf

답변

2

첫 번째 제안이 얻을 : 때문에이 시점에서,

$house->energy_class()->name 
이 가

가 작동하지 않습니다 당신만을 관계라고 불렀지 만, 당신이 원하는 것을 구체적으로 지정하지 않았습니다. 예 :

$house->energy_class()->first() 

$ house-> energy_class (위의 코드와 동일 함)가 결과를 반환하지 않았기 때문에 두 번째 try는 비어 있습니다.

이 다양한 원인이있을 수 있습니다

의 관계가 올바르게 서명되지
  • 데이터베이스하지 올바르게 설정 (? 당신이 당신의 마이그레이션에서 외래 키를 설정 한)
  • 그 집에는 실제 에너지 등급이 기입되어 있지 않습니다

나는 두 번째 또는 세 번째일지도 모른다고 생각합니다. 마이그레이션 스크립트를 붙여 넣을 수 있습니까?

편집 : PS. 각 하우스에 실제 에너지 클래스가 없기 때문에이 오류가 발생하는 경우 다음 코드를 사용하여이를 확인하십시오.

$house->energy_class ? $house->energy_class->name : "No energy class available"; 
+0

다음은 마이그레이션의 일부입니다 :'$ table-> integer ('energy_class') -> unsigned(); ('energy_classes'); '내가 편집하려고하는 집에는 클래스를 참조하는 id 1 세트의 에너지 클래스가 있습니다. 'A ++' – Scarwolf

+0

'$ house-> energy_class() -> first() -> name' 이름이 작동합니다. 하지만 'first()'가 없으면 관계가 없어야합니다. 관계가 하나의 관련 레코드 만 있다는 사실을 laravel에 알려야하기 때문에 ... – Scarwolf

+0

$ house-> energy_class-> 이름이 작동하지 않지만 귀하의 제안이 작동한다는 것은 이상합니다.생각 해봐야 할 정보가 있다는 것을 듣고 기쁘게 생각합니다! 먼저 요청해야하는 이유는 다양한 기타 옵션 (예 : firstOrFail, firstOrCreate)을 사용할 수 있기 때문입니다. – visscher

관련 문제