5

尝试将新属性添加到现有集合并访问它。

我需要的是这样的:

$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;

有什么帮助吗?

4

1 回答 1

4

我认为您在这里将 Eloquent 集合与 Support 集合混合在一起。使用时还要注意:

$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方法。

于 2017-11-18T18:58:55.783 回答