Laravel 5.5。 - 属性 [xxxx] 在此集合实例上不存在
Laravel 5.5. - Property [xxxx] does not exist on this collection instance
我创建了两个方法来发出 sql 请求,我想将这些请求共享到后台的所有视图:
public function getEntities()
{
$vcs = Valuechain::select('valuechains.id', 'lang_valuechain.vcname', 'lang_valuechain.vcshortname')
->withCount('segments')
->join('sectors', 'valuechains.sector_id', '=', 'sectors.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where('langs.isMainlanguage', '=', '1')
->whereNull('valuechains.deleted_at')
->whereNull('sectors.deleted_at')
->get();
return $vcs;
}
public function getEntitiesWithKeyneeds()
{
$valuechains = Valuechain::orderBy('valuechains.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where('langs.isMainlanguage', '=', '1')
->with('segments')
->with('keyneeds')
->withCount('segments')
->withCount('keyneeds')
->get();
foreach ($valuechains as $valuechain) {
$ids[] = $valuechain->id;
}
foreach ($ids as $id) {
$vcskns[] = Segment::select(
'lang_valuechain.vcname', 'lang_valuechain.vcshortname',
'lang_segment.segname', 'lang_segment.segshortname', 'segments.id',
'lang_segment.created_at', 'lang_segment.updated_at', 'lang_segment.deleted_at'
)
->distinct()
->withCount('keyneeds')
->join('lang_segment', 'segments.id', '=', 'lang_segment.segment_id')
->join('valuechains', 'segments.valuechain_id', '=', 'valuechains.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('sectors', 'valuechains.sector_id', '=', 'sectors.id')
->join('lang_sector', 'sectors.id', '=', 'lang_sector.sector_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where([
['langs.isMainlanguage', '=', '1'],
['valuechains.id', '=', $id]
])
->whereNull('valuechains.deleted_at')
->whereNull('sectors.deleted_at')
->whereNull('segments.deleted_at')
->get();
}
return $vcskns;
}
我在 returns 视图的另一个方法中调用此方法:
public function index(EntityInterface $vcs)
{
$entitiesLists = $vcs->getEntities();
$entitiesWithKnLists = $vcs->getEntitiesWithKeyneeds();
return view('admin.home', compact('entitiesLists', 'entitiesWithKnLists'));
}
我有一个 var_dump 其中 returns for entitiesWithKnLists :
[
{
"vcname":"VC1",
"vcshortname":"VC1",
"segname":"S1",
"segshortname":"S1",
"id":1,
"created_at":"2018-06-07 09:18:31",
"updated_at":"2018-06-07 09:18:31",
"deleted_at":null,
"keyneeds_count":0
},
{
"vcname":"VC1",
"vcshortname":"VC1",
"segname":"S2",
"segshortname":"S2",
...
},
{
"vcname":"VC2",
"vcshortname":"VC2",
"segname":"S3",
"segshortname":"S3",
...
},
]
在我看来 vcname 是重复的,我只想显示一次所以我在我看来写了以下代码:
@foreach($entitiesWithKnLists as $entitiesWithKnList)
{{ $entitiesWithKnList->first()->vcname }}<br>
@endforeach
它 returns 我期望的正确值。
当我想显示 "segname" 正如我们在 var_dump 中看到的那样时,我只是写了类似的东西:
@foreach($entitiesWithKnLists as $entitiesWithKnList)
{{ $entitiesWithKnList->segname }}
@endforeach
我收到一条错误消息:
属性 [segname] 在此集合实例上不存在。
谢谢
我终于这样解决了这个问题:
@foreach($entitiesWithKnLists as $entitiesWithKnList)
{{ $entitiesWithKnList->first()->vcname }}
@for ($i=0; $i< count($entitiesWithKnList); $i++ )
{{ $entitiesWithKnList[$i]->segname }}
@endfor
@endforeach
我创建了两个方法来发出 sql 请求,我想将这些请求共享到后台的所有视图:
public function getEntities()
{
$vcs = Valuechain::select('valuechains.id', 'lang_valuechain.vcname', 'lang_valuechain.vcshortname')
->withCount('segments')
->join('sectors', 'valuechains.sector_id', '=', 'sectors.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where('langs.isMainlanguage', '=', '1')
->whereNull('valuechains.deleted_at')
->whereNull('sectors.deleted_at')
->get();
return $vcs;
}
public function getEntitiesWithKeyneeds()
{
$valuechains = Valuechain::orderBy('valuechains.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where('langs.isMainlanguage', '=', '1')
->with('segments')
->with('keyneeds')
->withCount('segments')
->withCount('keyneeds')
->get();
foreach ($valuechains as $valuechain) {
$ids[] = $valuechain->id;
}
foreach ($ids as $id) {
$vcskns[] = Segment::select(
'lang_valuechain.vcname', 'lang_valuechain.vcshortname',
'lang_segment.segname', 'lang_segment.segshortname', 'segments.id',
'lang_segment.created_at', 'lang_segment.updated_at', 'lang_segment.deleted_at'
)
->distinct()
->withCount('keyneeds')
->join('lang_segment', 'segments.id', '=', 'lang_segment.segment_id')
->join('valuechains', 'segments.valuechain_id', '=', 'valuechains.id')
->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
->join('sectors', 'valuechains.sector_id', '=', 'sectors.id')
->join('lang_sector', 'sectors.id', '=', 'lang_sector.sector_id')
->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
->where([
['langs.isMainlanguage', '=', '1'],
['valuechains.id', '=', $id]
])
->whereNull('valuechains.deleted_at')
->whereNull('sectors.deleted_at')
->whereNull('segments.deleted_at')
->get();
}
return $vcskns;
}
我在 returns 视图的另一个方法中调用此方法:
public function index(EntityInterface $vcs)
{
$entitiesLists = $vcs->getEntities();
$entitiesWithKnLists = $vcs->getEntitiesWithKeyneeds();
return view('admin.home', compact('entitiesLists', 'entitiesWithKnLists'));
}
我有一个 var_dump 其中 returns for entitiesWithKnLists :
[
{
"vcname":"VC1",
"vcshortname":"VC1",
"segname":"S1",
"segshortname":"S1",
"id":1,
"created_at":"2018-06-07 09:18:31",
"updated_at":"2018-06-07 09:18:31",
"deleted_at":null,
"keyneeds_count":0
},
{
"vcname":"VC1",
"vcshortname":"VC1",
"segname":"S2",
"segshortname":"S2",
...
},
{
"vcname":"VC2",
"vcshortname":"VC2",
"segname":"S3",
"segshortname":"S3",
...
},
]
在我看来 vcname 是重复的,我只想显示一次所以我在我看来写了以下代码:
@foreach($entitiesWithKnLists as $entitiesWithKnList)
{{ $entitiesWithKnList->first()->vcname }}<br>
@endforeach
它 returns 我期望的正确值。
当我想显示 "segname" 正如我们在 var_dump 中看到的那样时,我只是写了类似的东西:
@foreach($entitiesWithKnLists as $entitiesWithKnList)
{{ $entitiesWithKnList->segname }}
@endforeach
我收到一条错误消息:
属性 [segname] 在此集合实例上不存在。
谢谢
我终于这样解决了这个问题:
@foreach($entitiesWithKnLists as $entitiesWithKnList)
{{ $entitiesWithKnList->first()->vcname }}
@for ($i=0; $i< count($entitiesWithKnList); $i++ )
{{ $entitiesWithKnList[$i]->segname }}
@endfor
@endforeach