php - Laravel - 将数组转换回集合

标签 php laravel

我试图仅在产品表中获取类别集合。我的类别表有 300 个项目。如果产品表中附加了一个类别,我只想要一个集合。 $categories 集合应该只会产生大约 10 个类别,因为只有大约 10 个产品具有不同的 category_ids

$products = DB::table('products')->groupBy('category_id')->get();

foreach($products as $product){
        $categories[] = DB::table('categories')->where('id', '=', $product->category_id)->first();
}

$categories = collect($categories)->all();

也许我做错了,应该使用不同的查询构建器方法?

最终结果 $categories 确实得到了我想要的结果,但在我的 Blade 中我得到了“尝试获取非对象的属性”错误。

最佳答案

如果在 Blade 文件中使用 $categories 作为集合,则需要删除 ->all() 方法。

->all() 在创建集合后将其转换为数组:

$categories = collect($categories);

关于php - Laravel - 将数组转换回集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295907/

相关文章:

Laravel方法获取输入参数而不修剪任何值

php - 在 PHP 中使用 TCPDF 将 SVG 转换为 PDF

php - Laravel - whereHas 最后一个关系是 = 'manual'

php - 模型中未定义的属性

javascript - PHP 邮件表单不会将输入发送到电子邮件

json - 如何在laravel中为api返回json格式而不是html

php - 通过急切加载循环关系

php - lazyload 在使用无限滚动时不在新页面上加载图像

PHP - 从两个 JPEG 图像创建简单的动画 GIF?

php - 使用 PDO 准备语句将空变量插入 MySQL