2016-06-18 4 views
0

내 모델의 함수가 데이터베이스 테이블을 호출 할 때 데이터베이스 테이블이 비어 있으면 오류가 발생합니다. 이것은 내 AccountMeta 모델의 코드입니다.멤버 함수 호출 null null의 getmetavalue()

Schema::create('account_metas', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('account_id'); 
      $table->string('meta_key'); 
      $table->string('meta_value'); 
      $table->timestamps(); 
     }); 

아무 문제가없는 경우가있는 account_metas 테이블의 데이터 만 때

$GroupFile = Auth::user()->account->meta->getmetavalue('file_group_contact'); 

내 데이터베이스 구조는 이것이다 :

public function scopeGetmetavalue($query, $key){ 
    $data = $query->where('meta_key', '=', $key)->pluck('meta_value'); 
    if($data->count()){ 
     if(isset($data[0])){ 
      return $data[0]; 
     } 
    } 

    return " "; 
} 

은 전화를 내보기에 그것은 비어 있습니다. 나는 오류가 있습니다. 그것의 어떤 생각?

+0

자세히 ... 검색어에 '계좌'와 '메타'가 무엇입니까? 관계가 정의되어 있습니까? 'dd (Auth :: user() -> account-> meta)의 출력은 무엇입니까? –

+0

테이블에 데이터가 없으면'Auth :: user() -> account-> meta'는'null'을 리턴합니다 . 따라서'Auth :: user() -> account-> meta-> getmetavalue ('file_group_contact')'호출은'null '에'getmetavalue()'를 호출 할 때 _Exception_을 부여하도록 바인딩됩니다. _Exception_을 그냥 무시하고 싶다면 문에 @ 기호를 붙이십시오. @Auth :: user() -> account-> meta-> getmetavalue ('file_group_contact')' – linuxartisan

답변

0

테이블에 데이터가없는 경우 Auth::user()->account->metanull을 반환합니다. 은 그래서

Auth::user()->account->meta->getmetavalue('file_group_contact') 

에 대한 호출은 사용자가 nullgetmetavalue()를 호출 당신에게 예외을 줄 수밖에 없다. 그냥 예외를 무시하려면, 다음 @ 기호로 문을 앞에 다음 table에 데이터가 없을 때

$GroupFile = @Auth::user()->account->meta->getmetavalue('file_group_contact'); 

지금, 당신은 $GroupFilenull로 대신 예외를 받고있을 것이다. 코드 실행을 계속하기 전에 $GroupFile 값을 확인할 수 있습니다.

if($GroupFile) { 
// some code 
} 
관련 문제