2017-11-04 4 views
1

나는이 같은 User 참조가 등록 Comment 모델이 :이 기능은 User의 인스턴스를 반환Laravel 배낭은 - 관계 기능의 특정 속성을 표시

public function user() { 
    return $this->belongsTo('App\User'); 
} 

을, 그것은 맞습니다,하지만 난 돈 배낭을 사용하여 user 속성을 가져 오는 User 열을 등록하는 방법을 알지 못합니다.

enter image description here

그래서, 가 어떻게 나의 관계 기능에서 특정 필드를 얻는 대신, 나는 나의 모델의 JSON 표현을 얻을 수있어?

답변

1

는 소리. 그냥과 같이, 당신의 EntityCrudController의 setup() 방법을 사용

$this->crud->addColumn([ 
    // 1-n relationship 
    'label' => "User", // Table column heading 
    'type' => "select", 
    'name' => 'user_id', // the column that contains the ID of that connected entity; 
    'entity' => 'user', // the method that defines the relationship in your Model 
    'attribute' => "user", // foreign key attribute that is shown to user 
    'model' => "App\Models\User", // foreign key model 
]); 

은 "속성"테이블 셀 (이름, 아이디, 등)에 표시 할 것을 CRUD를 알려줍니다.

+0

Thanks @tabacitu. 솔루션이 효과적이었습니다. 의견도 정말 유용했습니다. '유형'키에 대해 '선택'은이 문맥에서의 의미입니까? – juniorgarcia

+1

필드를 정의 할 때 "type"은 crud에게 사용자에게 표시 할 필드의 종류를 알려줍니다. 배낭에는 44 가지 유형의 필드 유형이 있으며, 여기에서 확인하십시오. https://laravel-backpack.readme.io/docs/crud-fields – tabacitu

+1

Oups에서 열에 대해 이야기하고 있습니다. 같은 것, 여기에 열 유형이 있습니다 - https://laravel-backpack.readme.io/docs/crud-columns-types – tabacitu

0

당신이 할 경우

$user = $comment->user->user; 

당신은 '테스트'를 얻을 것이다; (귀하의 예에서)

사용자 모델에 사용자 속성이 있기 때문에 혼란 스러울 수 있습니다. 어쩌면 당신은 '사용자'대신 '이름'이라고 부를 수 있습니다. 그렇게하면 전화 할게요 :

$username = $comment->user->name; 

관련 모델에 대한 속성을 호출하기 전에 관계가 있는지 반드시 확인하십시오.

if(!is_null($comment->user)) { 
    $username = $comment->user->user; 
} 

또는 : the select column 당신을 위해 완벽하게 일치처럼

$username = !is_null($comment->user) ? $comment->user->user : 'No user';