2016-07-11 4 views
0

나는 클라이언트와 그의 프로젝트의 현재 관계Laravel에 BelongsTo 관계 실존

프로젝트 모델을

public function client() 
{ 
    return $this->belongsTo('Client', 'cid'); 
} 

프로젝트 컨트롤러 이제 모든 것이 잘 작동, 나는 수 있어요

public function index() { 
    $projects = Project::with('client')->orderBy('pid', 'desc')->get(); 
    $this->layout->content = View::make('projects.index')->with('projects', $projects); 
} 

프로젝트 뷰에서 클라이언트에 대한 모든 정보를 가져옵니다. 그러나 클라이언트 ID가 데이터베이스 (클라이언트 테이블에 있음)에 없으면 "비 객체 속성을 얻으려고합니다."라는 오류 메시지가 나타납니다. 이 오류가 발생하는 대신 빈 객체를 보낼 수 있기를 원합니다. 어디서부터 시작해야할지 모르겠다. 모델 자체 또는 컨트롤러에서 확인해야하나요? 아니면 뷰에 체크를 추가할까요? 클라이언트가 존재하지 않기 때문에이 경우

project.client.name 

는 예외를 던져해야하지만 이름 속성에 액세스하려고 :

+0

클라이언트에 :: 대신 ::를 사용하면 전체 프로젝트 행 (예 : 테이블에 프로젝트 표시)이 생략됩니다. 비어있는 연락처 나 찾을 수없는 경우 "알 수 없음"으로 프로젝트를 계속 표시하고 싶습니다. – NyseX

답변

0

apply constraint to eager loading 수 있습니다. 개념 증명을 위해

$users = Project::with(array('client' => function($query) 
{ 
    $query->raw(
    /*Add your constraint here to coalesce a default for cid or clients. 
    You may set a default null record in the client table for this case.*/ 
); 

}))->get(); 
0

나는 테이블을 렌더링 할 때 somethink처럼 사용 내기. 이 테이블을 렌더링 할 때 클라이언트가 존재하는지 확인해야합니다.

+0

네, 그렇습니다. 정확히 묻습니다. 클라이언트가 존재하는지 여부를 정확히 확인해야합니까? 로드되는 많은 프로젝트가 있습니다. 그러나 클라이언트가 클라이언트 테이블에 존재하지 않으면 비어있는 개체를 보내서 $ projects-> client-> name을 얻으려고하면 null 값을 반환합니다. 객체가없는 빈 객체가 오류가 아닙니다. – NyseX

+0

코드에서 시도해보십시오. {{isset ($ project.client)? $ project.client : 'Default'}}} –

관련 문제