2017-11-18 10 views
0

기존 컬렉션에 새 속성을 추가하고 액세스하려고합니다.Eloquent Collection에 새 속성 추가

은 내가 필요한 것은 같은 것입니다 :

$text = Text::find(1); //Text model has properties- id,title,body,timestamps 
$text->user = $user; 

을 그리고 $text->user를 통해 사용자가 액세스 할 수 있습니다.

설명서를 살펴본 결과 put, prepend, setAttribute 개의 방법이 있습니다. 다시

$collection = collect(); 
$collection->put('a',1); 
$collection->put('c',2); 
echo $collection->c; //Error: Undefined property: Illuminate\Support\Collection::$c 

,

$collection = collect(); 
$collection->prepend(1,'t'); 
echo $collection->t = 5; //Error: Undefined property: Illuminate\Support\Collection::$t 

그리고

$collection = collect(); 
$collection->setAttribute('c',99); // Error: undefined method setAttribute 
echo $collection->c; 

어떤 도움?

답변

0

여기에 섞어 온 것 같네요.

$text = Text::find(1); //Text model has properties- id,title,body,timestamps 
$text->user = $user; 

여기에는 컬렉션이 하나만 있지만 하나의 개체 만 있습니다.

그러나 이제 살펴 보자 :

$collection = collect(); 
$collection->put('a',1); 
echo $collection->c; //Error: Undefined property: Illuminate\Support\Collection::$c 

당신은 c을 복용하고 있고, 이러한 요소가 없습니다.

echo $collection->get('a'); 

또는 대안이 같은 배열 액세스를 사용 : 당신이해야 할 것은이 같은 a 키에 있습니다 요소를 가지고있다

echo $collection['a']; 

또한 컬렉션에 더 setAttribute 방법이없는 알 수 있습니다. Eloquent 모델에는 setAttribute 방법이 있습니다.

+0

답변 해 주셔서 감사합니다. 좋아, laravel 설명서에서 'all'또는 'get'과 같은 쿼리는 'Illuminate \ Database \ Eloquent \ Collection' 인스턴스를 반환합니다. 그래서'setAttribute' 메소드를 사용할 수 없습니까? 그리고 "put 메소드 사용"예제를 업데이트했습니다. – MASh

+0

아니요, setAttribute는 단일 모델에서만 사용할 수 있으며, 모델을 구하려면'get' 또는'all'을 사용하지 마십시오. '$ text = Text :: where ('id', 1) -> get();'모델의 컬렉션을 원한다면'$ text [0]'에 첫 번째 모델이 있지만 분명히 이드를보고있을 때이 ID를 가진 단일 요소 만 있기 때문에 결과를 수집하는 데 아무런 의미가 없습니다. –

+0

나는 실종됐다. 당신의 대답을 수락하십시오. 노력해 주셔서 감사합니다. – MASh