2014-10-14 5 views
0

약간의 설명이 필요합니다.비 객체의 속성을 얻으려고 시도합니다.

Eloquent를 사용할 때 언급 된 것과 같은 "비 객체의 속성을 얻으려고 시도하는 중"이라는 오류 메시지가 표시됩니까? 내가 미친거야. 함수를 사용하고 있습니다.

public function squadra_post() 
{ 
return $this->hasMany('Squadra','id_squadra'); 
} 

이것은 Eloquent Post를 확장 한 모델입니다. 전화가 왔을 때 :

<?php $squadra = Post::find($roles->id_squadra)->squadra_post; ?> 

내가 전에 언급 한 오류를 준다.

편집

자신의 자신의 방법과 클래스 게시물입니다. 무엇이 문제인지를 알려주는 것은 "squadra_post()"입니다. id_squadra에 의해 팀의 이름을 추출해야합니다.

class Post extends Eloquent implements UserInterface, RemindableInterface 
{ 
    protected $table = 'post'; 
    protected $primaryKey = 'id_post'; 
    public $timestamps = false; 

    public function commenti() 
    { 
     return $this->hasMany('Commento','id_post'); 
    } 

    public function apprezzamenti() 
    { 
     return $this->hasMany('Apprezzamenti','id_post'); 
    } 

    public function squadra_post() 
    { 
     return $this->hasMany('Squadra','id_squadra'); 
    } 
} 

이 클래스 "squadra"

class Squadra extends Eloquent implements UserInterface, RemindableInterface 
{ 
    protected $table = 'squadra'; 
    protected $primaryKey = 'id_squadra'; 
    public $timestamps = false; 
} 

그리고 마지막으로,이 나에게 문제를 제공하는 코드가의 코드입니다. 라인

$squadra = Post::find($roles->id_squadra)->squadra_post; 

squadra_post() 방법

에서 비 객체

@foreach($post['post'] as $roles) 
    @if($roles->id_squadra != 0) 
     $squadra = Post::find($roles->id_squadra)->squadra_post; 
     @foreach($squadra as $squadra_post) 
      {{ $squadra->nome }} 
     @endforeach 
    @endif 
@endforeach 

답변

0

의 속성을 얻기 위해 개체의 집합 (게시물 같아요)을 반환 시도 : 그것은 나에게 오류를 제공 무엇인가 Post::find()이 개체를 반환하는 동안 관계의 성격 (1 대 다수) 때문에 개체가 아닙니다. 나는 이것이 오류가 발생한 곳이라고 생각한다.

다음 코드

$squadra = Post::find($roles->id_squadra); 

if ($squadra) { 
    echo $squadra->name; 

    foreach ($squadra->squadra_post as $post) { 
     echo $post->title; 
     echo $post->content; //etc 
    } 
} 

은 또한 당신이 외래 키는 당신이 당신의 squadra_post() 방법에 선언 id_squadra되어 있는지 확인해야합니다 편집을 시도합니다.

+0

나는 이미 시도했지만, 나는 항상 같은 오류가 있습니다. 이해할 수없는 점은 비슷한 코드를 "좋아요"와 주석으로 사용한다는 것입니다. – Francesco

+0

$ roles-> id_squadra가 다중 ID가 아닌 단일 ID를 반환하고 있습니까? – geoandri

+0

그것은 나에게 오류를 제공합니다 : foreach는 대한 공급 잘못된 인수()를 – Francesco

0

특정 게시물을 찾으려고 피곤할 때 찾을 수 없으므로 "비 오브젝트의 속성을 얻으려고 시도 중입니다."라는 예외가 발생합니다. 게시물을 찾았 으면 squadra_post를 반환했을 것이고 변수에 저장되었을 것입니다.

대신 특정 개체를 찾을 수 없으므로 개체를 구성 할 수 없으므로 특정 속성 이름 인 squadra_post를 찾을 수 없습니다. 따라서 "개체가 아닌 속성을 얻으려고 시도하는 중"오류가 발생합니다.

try 및 catch 블록에 코드를 넣어이 예외를 처리 할 수 ​​있습니다. Laravel 4+는 관계 이름이 camelCased으로 만 다음 dynamic properties을 사용할 수 있습니다 기대 becuase

0

첫째로, 당신의 관계는, 이런 식으로 작동하지 않습니다.

그래서 squadraPost()로 이름을 변경하고 $post->squadraPost처럼 호출하고 거기에 관련된 모든 모델인지 아닌지 hasMany의 경우에 당신은 여기에 상관없이 Collection을 얻을 것이다.

다음 것은 관련 모델이있는 경우 검사 - 이것은 여기에 답변을 읽기 : 그래서 먼저이 있는지 확인 당신이 find() 방법에서 null가 나타날 수 있습니다 Laravel check if related model exists

그리고 마지막으로,하지만 적어도 :

$post = Post::find(..) 

null이 아니라 모델을 반환합니다. 그래야만 그 관계를 호출 할 수 있습니다.

if ($post) $post->squadraPost; 
관련 문제