添加新的 属性 到 Eloquent Collection
Adding new property to Eloquent Collection
正在尝试向现有 collection 添加新的 属性 并访问它。
我需要的是:
$text = Text::find(1); //Text model has properties- id,title,body,timestamps
$text->user = $user;
并通过 $text->user
访问用户。
探索文档和 SO,我发现 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;
有什么帮助吗?
我想你在这里 Eloquent collection 与支持 collection 混在一起。使用时还要注意:
$text = Text::find(1); //Text model has properties- id,title,body,timestamps
$text->user = $user;
你这里没有collection,只有一个object。
但是让我们看看:
$collection = collect();
$collection->put('a',1);
echo $collection->c; //Error: Undefined property: Illuminate\Support\Collection::$c
您正在参加c
,您没有这样的元素。你应该做的是像这样获取位于 a
键的元素:
echo $collection->get('a');
或者像这样使用数组访问:
echo $collection['a'];
另请注意 Collection 上没有 setAttribute
方法。 Eloquent 模型上有 setAttribute
方法。
正在尝试向现有 collection 添加新的 属性 并访问它。
我需要的是:
$text = Text::find(1); //Text model has properties- id,title,body,timestamps
$text->user = $user;
并通过 $text->user
访问用户。
探索文档和 SO,我发现 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;
有什么帮助吗?
我想你在这里 Eloquent collection 与支持 collection 混在一起。使用时还要注意:
$text = Text::find(1); //Text model has properties- id,title,body,timestamps
$text->user = $user;
你这里没有collection,只有一个object。
但是让我们看看:
$collection = collect();
$collection->put('a',1);
echo $collection->c; //Error: Undefined property: Illuminate\Support\Collection::$c
您正在参加c
,您没有这样的元素。你应该做的是像这样获取位于 a
键的元素:
echo $collection->get('a');
或者像这样使用数组访问:
echo $collection['a'];
另请注意 Collection 上没有 setAttribute
方法。 Eloquent 模型上有 setAttribute
方法。