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

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

$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确实得到了我想要的结果,但是在刀片中我得到了“试图获取非对象的属性”错误.

解决方法:

您会尝试获取非对象的属性,因为其中之一

DB::table('categories')->where('id', '=', $product->category_id)->first();

返回空值.

你可以这样解决

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

$categories = collect();

foreach($products as $product){

$category = DB::table('categories')->where('id', '=', $product->category_id)->first();

if ($category) {

$categories->push($category);

}

}

如果要获取集合实例,则必须使用带有数组参数的collect()帮助器方法.

例如

collect($categories); // is_array(categories) is true

您在foreach中有很多要求.那不是正确的方法.相反,您可以仅执行2个请求即可实现集合实例.

$categoryIds = DB::table('products')->pluck('category_id')->toArray();

$categories = DB::table('categories')->whereIn('id', $categoryIds)->get();

标签:laravel,php

来源: https://codeday.me/bug/20191108/2005253.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 设计模式 观察者_设计模式Python实现-观察者模式

观察者模式(发布-订阅模式 Publish Subscribe Pattern):定义了一种一对多的关系,让多个观察对象同时监听一个主题对象,当主题对象状态发生变化时会通知所有观察者,是它们能够自动更新自己,是一种行为设计模式。观察者模式的结构1,Publisher 会…

oracle loop index,oracle index 聚集因子

简单看一下clustering_factor简单的说CLUSTERING_FACTOR 用于INDEX 的有序度和表的混乱度之间比较b*tree index是经过排序的例如 INDEX中 记录的第一个rowid指向 表所在DATAFILE 中 BLOCK#1 第1行 计数器 记为1,第2个rowid 指向 BLOCK#2 由于改变了块 所以 计数器加…

分析以太网帧结构_传统以太网中的——中继器及集线器

1.1 Repeater 中继器中继器工作在以太网的第一层即物理层, 两端口设备,主要功能是放大信号,从而延长信号在同一网络上传输的长度。中继器的存在主要是解决解决电信号长距离传播过程中的衰减问题,以增加信号强度和传播距离。Figure…

根据oracle入库数据进行告警,Oracle 启动故障案例之--ORA-600 [4193]错误

ORA-600[4193] 这个错误也是与UNDO 有关系,MOS 上有几篇相关的说明文章.一.MOS说明1.1 ORA-600 [4193] WhenTrying To Open The Database [ID 763566.1]SymptomsCopying database from one server to another server and getting an ORA-600 [4193] error when tryi…

html表ge模板_精选甘特图模板,丰富又好用

你听说过甘特图吗?你可能不知道,也有可能是只是听说过但是并不了解。今天我们就来说一说甘特图吧!甘特图其实就是是通过标示出活动顺序和时间间隔来表示某一特定项目的顺序与时间之间的关系的一种图表。与时间表或日程规划表不同的部分是甘特…

js函数提示 vscode_为VSCode / Monaco Intellisence添加JavaScript类型提示

有没有办法暗示VSCode / Monaco的intellisense变量的类型.我有一些像这样的代码var loc window.location;var gl context1.getContext("webgl");var ctx context2.getContext("2d");我看到VSCode知道loc是一个URL但它不知道gl是什么它也不知道ctx是什么…

oracle中调试存储过程,详解Oracle调试存储过程

详解Oracle调试存储过程一 调试关键步骤1、在要调试的存储过程右键,选择编辑以进行调试,截图如下:2、点击小瓢虫,弹出调试窗口,截图如下:3、输入7839员工编号,点击确认,进行调试&…

imp oracle full,Oracle 10g imp 之 full database (转官档)

Using Export and Import to Move a DatabaseBetweenPlatforms10g官档:The Export and Import utilities are the only method that Oracle supports for moving an existing Oracle database from one hardware platform. to another. This includes moving between UNIX and …

python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类

龙源期刊网http://www.qikan.com.cn基于朴素贝叶斯对Wine数据集分类作者:夏赵建杜友福来源:《电脑知识与技术》2017年第29期摘要:为了解决由于葡萄酒的组成成分十分复杂与多样而导致它的类型分类与品质划分困难的问题,减少由于感官…

伪静态php配置,PHP开启伪静态配置

1.检测Apache是否开启mod_rewrite功能可以通过php提供的phpinfo()函数查看环境配置,找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。…

python flask上传文件_Python-Flask-文件上传

一、Python-Flask-文件上传1、简化版文件上传创建目录:cd 5-4mkdir -p uploads #必须先创建uploads文件夹。upload.htmlTitle文件上传示例app.pyimport osfrom flask import Flask, render_template, send_from_directory, request, jsonify, make_responseimport t…

linux的apache安装在哪个目录,在linux系统下apache的默认安装路径在哪

如果采用RPM包安装,安装路径应在 /etc/httpd目录下。(学习教程推荐:apache)apache配置文件:/etc/httpd/conf/httpd.conf 可以修改相关的访问路径及配置Apache模块路径:/usr/sbin/apachectl 启动模块web目录:/var/www/h…

车子Linux系统,Linux车载系统Automotive Grade Linux

【中关村在线软件资讯】7月8日消息:Linux在车载系统上,并不想落后于苹果、谷歌等竞争对手,这不,Linux最近也推出了可定制的车载系统平台——Automotive Grade Linux,旨在建立一个未来智能汽车系统的标准。Linux车载系统…

linux 进程带宽限制,在Linux中限制网络带宽使用

限制网络流量速率的一种方法是通过一个名为trickle的命令行工具。通过在程序运行时,预先加载一个速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 trickle 命令有一个很好的特性是它仅在用户空间中运行,这意味着&…

gpedit msc组策略面板 win10在哪里_windows10的组策略在哪

展开全部请参看:网页链接第一种方法:无论32位还是64位,均可.我的是64位.How to Enable Group Policy Editor (gpedit.msc) In Windows 10 Home EditionLast Updated on: July 10, 2020 by Usman Khurshid这里下载的就是个批处理文件gpedit-enabler.bat,内容是:echo offpushd &q…

linux ping监控脚本,WINDOWS和LINUX下带时间的PING包监控脚本

WINDOWS使用方法;cscript ping.vbs 172.26.163.10 -t -l 1000Dim args, flag, unsuccOutargs""otherout""flag0If WScript.Arguments.count 0 ThenWScript.Echo "Usage: cscript ping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]&q…

nx set 怎么实现的原子性_正确地使用Redis的SETNX实现锁机制

setNX,是set if not exists 的缩写,也就是只有不存在的时候才设置, 设置成功时返回 1 , 设置失败时返回 0 。可以利用它来实现锁的效果,但是很多人在使用的过程中都有一些问题没有考虑到。例如某个查询数据库的接口因为请求量比较…

linux img 内核启动,linux的启动流程(initrd.img)

http://www.ibm.com/developerworks/cn/linux/l-initrd.html一、从哪里到哪里本文旨在描述linux中内核如何调用启动,然后如何从img的文件系统切换到硬盘的过程。描述起于:linux-2.6.11/init/main.c中函数 static int init(void * unused)描述止于&#x…

python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask

前些日子研究了一下qq和新浪微博的第三方登陆的东西,发现其实难度并不大。来给大家分享一下我的经验和流程。不论是qq还是新浪微博的第三方登陆都是用了Oauth2.0授权流程,唯一不同的是qq多了一个openid的获取,多了一步。先介绍一下Oauth2.0的…

linux boot分区有什么用,/ boot分区的真正作用是什么?

射门很难引导...好吧...这确实是最难的部分。每次启动计算机时,它基本上都会重新适应。它熟悉其各个部分,并且满足每个部分都具有功能。但可以说,它每次都要从自己的引导程序中拉起自己。在设计启动过程时,技巧是逐步启动计算机。…