尝试将新属性添加到现有集合并访问该属性。
我需要的是:
$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;
有任何帮助吗?
答案 0 :(得分:1)
我认为你在这里混合了Eloquent系列和支持系列。使用时请注意:
$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
并且您没有这样的元素。你应该做的是采用a
键的元素,如下所示:
echo $collection->get('a');
或者像这样使用数组访问:
echo $collection['a'];
另请注意,Collection上没有setAttribute
方法。在Eloquent模型上有setAttribute
方法。