Php 关系和嵌套数据Elount和laravel
在我的应用程序中,一个用户可以有许多列表,许多列表可以有许多标签。在我的一个页面上,我正在执行以下查询,以根据用户的配置文件slug获取用户列表Php 关系和嵌套数据Elount和laravel,php,laravel,collections,eloquent,Php,Laravel,Collections,Eloquent,在我的应用程序中,一个用户可以有许多列表,许多列表可以有许多标签。在我的一个页面上,我正在执行以下查询,以根据用户的配置文件slug获取用户列表 $user=user::with('listings.tags','listings.assets')->where('slug',$slug)->first() 从这个结果集中,我想得到所有的列表,并提取唯一的名称,并将其分配给一个新的键,即usedTags 但是当我这样做的时候, return $user->filter(function($
$user=user::with('listings.tags','listings.assets')->where('slug',$slug)->first()代码>
从这个结果集中,我想得到所有的列表,并提取唯一的名称,并将其分配给一个新的键,即usedTags
但是当我这样做的时候,
return $user->filter(function($listings){
foreach($listings as $listing) {
return $listing;
$user['tags'][] = $l->tags->pluck('tag');
}
});
我得到以下错误
消息:“调用未定义的方法App\User::filter()”
因此,我假设当我使用first()
时,它不会返回集合(?),因此我无法对其进行筛选,那么我在这里可以做什么?$user->listings->filter(…)
您还应该能够使用with()中的子查询,with(['relation'=>函数($q){});您可能可以通过应用distinct或group来过滤这样的标记。例如,$q->select('name')->groupBy('name')$user->listings->filter(…)
您还应该能够在with()中使用子查询,with(['relation'=>函数($q){});您可能可以通过应用distinct或group来过滤这样的标记。例如,$q->select('name')->groupBy('name'))