当然,这对我来说是一个理解问题。我只是想创建一个可以输出元素的集合。
示例:
所以我希望能够执行:
$collection=collect([
'index1' => 'data1',
'index2' => 'data2',
'index3' => 'data3',
]);
$row=$collection->first();
dd($row->index1);
或类似..但我收到错误
尝试获取非对象的属性。
这是关于Laravel系列的理解问题,我已经阅读了从基本用法到API参考的Laravel文档。我找不到有关如何生成此基本静态集合的信息。
有人可以帮忙吗?
答案 0 :(得分:1)
$row=$collection->first();
指向值data1
,而不是对象/数组。
要获得预期的行为,请尝试下面的代码,它将每个代码包装在各个数组中。
$collection=collect([
['index1' => 'data1'],
['index2' => 'data2'],
['index3' => 'data3'],
]);
$row=$collection->first();
dd($row->index1);
答案 1 :(得分:0)
当Laravel集合实现ArrayAccess
时,您可以像使用数组一样访问集合项
$value = $collection['index1'];
或者您可以对集合使用get
方法
$value = $collection->get('index1');
答案 2 :(得分:0)
感谢您的回答,我看到$ collection ['index1'];格式有效。
这不是我想要的,让我解释一下原因。我知道可能有更好的方法,但为了这个特殊的编码要求,我想知道答案。
我正在构建一个CRUD刀片表单。
在我的刀片上,我将'field1'的初始输出为$ dbcollection-> field1
现在当然如果数据库返回null(需要创建),则此输出将失败。所以我在这里尝试做的是传递刀片一个它理解的NULL填充集合,所以至少它不会抱怨对象的非实例并避免刀片表单上的@if语句来解释编码格式的差异。
答案 3 :(得分:0)
我相信这就是你要找的东西:
Controller
:
$collection=collect([
'index1' => 'data1',
'index2' => 'data2',
'index3' => 'data3',
]);
$row = $collection->first();
view
:
<input type="text" value="{{ ($row->index1 ? $row->index1 : '') }}" >
.
.
.
.