Laravel find in set排序

做项目遇到个需求,需要对结果集中的数据进行指定规则的顺序排列。例如,用户状态有四种:0=>未激活;1=>正常;2=>禁用;3=>软删除现在的需求是,我要按照:正常->未激活->禁用->删除;这个顺序来进行排序,同时按照注册时间降序,网上查了很多资料,国内提到这个的很少,在stackOverFlow上找到了答案!先上解决方案:publicfunctionindex($customer_type=null){$search=request('search');$perPage=request('perPage')?request('perPage'):10;$customer_type=$customer_type?$customer_type:request('customer_type');//DB::enableQueryLog();$data=Customer::select(['id','email','user_name','nick_name','status','phone','create_time'])->where('c...

laravel的ORM模型的find(),findOrFail(),first(),firstOrFail(),get(),list(),toArray()之间的区别

find($id)需要一个id并返回一个模型。如果不存在匹配的模型,则返回null。 findOrFail($id)需要一个id并返回一个模型。如果不存在匹配的模型,则会引发错误,它会抛出一个error。 first()返回在数据库中找到的第一条记录。如果不存在匹配的模型,则返回null。 firstOrFail()返回在数据库中找到的第一条记录。如果不存在匹配的模型,则会引发错误。它会抛出一个error。 get() 返回与查询匹配的模型集合。 pluck($column)仅返回给定列中值的集合。在以前的Laravel版本中,调用了此方法lists。 toArray() 将模型/集合转换为简单的PHP数组。 注意:一个集合是一个强化的数组。它的功能与数组类似,但功能很多,正如您在文档中看到的一样。不幸的是,PHP不允许在任何地方使用集合对象来使用数组。 例如,在一个foreach循环中使用集合是可以的, 把它传递给array_map不是。同样,如果您键入提示参数array,P...

Laravel5.2中Eloquent与DB类的区别是什么?

要了解这些先看看关于数据库组件的那些事儿(就是EloquentORM)数据库组件大概分了三层:数据库连接层查询构造层应用层来看一下每一层有哪些东西,分别对应文档的哪一部分:数据库连接层数据库连接层是整个数据库组件依赖的基础,这个不言而喻,但是这部分实际上从 文档 都能够看得出,本身更多是基于 PDO的封装,在此基础上提供了以下几个主要功能:更为直观易用的事务读写分离功能多种数据库驱动兼容和切换数据库事件这一部分的功能可以通过Facade快捷调用(DB类),文档已有说明,很明显,只要是使用过 PDO 或者MySQLi的都能够快速上手使用参数绑定和SQL预处理功能。为了便于事件处理,这一部分对增删改查四个操作每一个都封装了一个方法,实际上调用方法一致(都是封装的PDO和PDOStatement类的方法),仅产生的结果类型有所区别。这一层很底层,对于需要直接手写SQL操作数据库的人可以通过这一层访问,大多数情况下我们不会直接使用(不过事务很常用,我们会在后面的文章讲到)。需要注意的是,作为底层,意味着数据库组件后面所有的功能都是利用这一层实现...

Laravel 中如何区别 Model 或者是 Builder?

User::where('id',1)->update([]) 和 User::find(1)->update([]) 有异曲同工之效. 当你通过Laravel与数据库交互时,你可能时而用Eloquent,时而用更接近于SQL原生的查询构造器。Eloquent其实就是对查询构造器的对象化包装。就像是给查询器外面包了一层语法糖  一般情况下,所有关于查询构造器的内容都可以在这个命名空间下找到: IlluminateDatabaseQueryBuilder而所有关于Eloquent的内容都会放在这个命名空间下: IlluminateDatabaseEloquentModel   Eloquent也是由很多部分组成的,最具有魅力的部分莫过于Model类、它自身用的查询构造器,还有一些比较重要的类,像模型关联等。举个栗子,我们现在就来具体剖析一下两种查询语句User::where('id',1) :这条语句是从一个eloquent模型开始,当调用where()函数...

laravel查询构造器DB还是ORM,这两者有什么区别,各该用在什么场景中

解答一:我们所有操作都是走的orm,因为操作简单直观明了好维护,性能是低一些但还没有多致命,真有并发需要优化了用DB也不一定能解决问题。还是要了解orm每个方法的意思,不然你可能一不小心就会多出来很多很多sql,比如取列表的时候加个with不要仅仅靠关系来获取联表的其他内容。解答二:数据查询上面,ORM不会比DB差的,就比如with,是用了sql最基本的拆语句优化。ORM的损耗仅仅是代码层面的,这已经不算是问题了。ORM适用于一般到中等复杂度的查询,也适用于各种模型操作,比如有一个关系targets,你可以直接用targets()->delete()等等进行关系数据操作。ORM中的软删除,自动更新时间字段,字段保护,字段类型转换,都会在一些规范而且系统的工程中让你受益。另外DB的场景:一些比较复杂的查询语句,事务操作,等都需要DB来完成。解答三:DB主要是一个查询构造器(SQLBuilder),它会帮你把输入的参数转变成SQL语句去数据库里查询,和你自己手动写SQL语句本质上是一样的。ORM是一个对象关系映射(ObjectRelationalMapper)工具,它会把数据库中的数...

laravel 框架接入环信遇到的坑(-)

在脚本中执行判断user表中是否注册环信时,报错: “请求错误:service_resource_not_foundServiceresourcenotfound  ”//判断环信是否已经注册该用户$personal=Easemob::getUser($user->id);dd($personal);追踪到composer包中link1stlaravel-easemobsrcappHttp.php文件,添加一行returnfalse;即可; publicfunctionindex(){$userList=User::where('remarks','like','%0417%')->get();$registers=array();$num=0;foreach($userListas$key=>$user){//判断环信是否已经注册该用户$personal=Easemob::getUser($user->id);//dd($personal);if(!$personal){$registers[]=array('usern...

环信及时通讯 Laravel 扩展包

环信及时通讯laravel包开发,用于环信用户、群、聊天室等功能github地址 加载包"link1st/laravel-easemob":"dev-master"在配置文件中添加 config/app.php'providers'=>[/***添加供应商*/link1stEasemobEasemobServiceProvider::class,],'aliases'=>[/***添加别名*/'Easemob'=>link1stEasemobFacadesEasemob::class,],生成配置文件phpartisanvendor:publish设置环信的参数 config/easemob.php  获取tokenEasemob::getToken(); 开放注册用户$user=Easemob::publicRegistration('xiaoming1'); 授权注册同一个用户只能注册一次$user=Easemob::authorizationRegistration('xiaoming1');...

laravel 开启定时任务需要操作

1.在xshell中 crontab-e//编辑任务crontab-l//查看执行中的任务列表   2.在打开的任务中:/home/wwwroot/default换为自己项目的根路径vagrant/laizheer/*****/usr/bin/php  /home/wwwroot/default/artisanschedule:run>>/dev/null2>&1 3.启动服务sudoservicecrondstart 4.清除任务crontab-r 补充:protectedfunctionschedule(Schedule$schedule){ } ...

Laravel-任务调度

简介Cron是UNIX、SOLARIS、LINUX下的一个十分有用的工具,通过Cron脚本能使计划任务定期地在系统后台自动运行。这种计划任务在UNIX、SOLARIS、LINUX下术语为CronJobs。Crontab则是用来记录在特定时间运行的Cron的一个脚本文件,Crontab文件的每一行均遵守特定的格式:我们可以在服务器上通过crontab-e来新增或编辑Cron条目,通过crontab-l查看已存在的Cron条目。更多关于Cron的原理和使用细节请自行百度或Google。在以前,开发者需要为每一个需要调度的任务编写一个Cron条目,这是很让人头疼的事。你的任务调度不在源码控制中,你必须使用SSH登录到服务器然后添加这些Cron条目。Laravel命令调度器允许你流式而又不失优雅地在Laravel中定义命令调度,并且服务器上只需要一个Cron条目即可。任务调度定义在app/Console/Kernel.php文件的schedule方法中,该方法中已经包含了一个示例。开启调度器下面是你唯一需要添加到服务器的Cron条目,如果你不知道如何添加Cron条目到服务器,可以考虑使用诸如...
代码星球 代码星球·2020-11-21

laravel 定义翻译字符串

https://learnku.com/docs/laravel/5.6/localization/1376//全景链接$data['share_phone']=trans('web.host').'/building/'.$buildings->view_uuid.'?key='.urlencode(Encryption::ecryptdString($user->phone))??'';  ...

laravel 预加载特定的列

/**订单列表0已删除1执行中2已过期**@paramRequest$request**@returnIlluminateContractsViewFactory|IlluminateViewView*@authorlxw*/publicfunctiongetOrderList(Request$request){$this->closeSqlFullMode();$query=$this->buildingPayment->query();$status=$request['status']??'1';switch($status){case'1'://执行中$query->whereDate('duetime','>',date('Y-m-d',time()));break;case'2'://已到期$query->whereDate('duetime','<=',date('Y-m-d',time()));break;case'0'://已删除$query->onlyTrashed();break;default:$query->...
代码星球 代码星球·2020-11-21

laravel 远程一对多实例

/***关联楼宇推荐书关联表*远程一对一*/publicfunctionbuildingPanos(){return$this->hasManyThrough('AppBuilding',//远程表'AppModelListBuildingPano',//中间表'pano_id',//中间表对主表的关联字段'id',//远程表对中间表的关联字段'pano_config_id',//主表对中间表的关联字段'building_id'//中间表对远程表的关联字段);}  ...

laravel 循环中子元素使用&符号嵌入到父级,经典版

/**ajax获取企业名称**@paramRequest$request**@returnIlluminateHttpJsonResponse*@authorlxw*/publicfunctiongetCompanyName(Request$request){$keyword=$request->query->get('q','');$allCompany=Company::query();$allCompany=$allCompany->select('id','username');if($keyword){$allCompany=$allCompany->where('username','like','%'.$keyword.'%');}$allCompany=$allCompany->orderBy('created_at','desc');$allCompany=$allCompany->limit(5);$allCompany=$allCompany->get();if(empty($allCompany)){returnresp...

在Laravel中使用数据库事务以及捕获事务失败后的异常

在Laravel中要想在数据库事务中运行一组操作,则可以在DBfacade中使用transaction方法。如果在事务的闭包内抛出异常,事务将会被自动还原。如果闭包运行成功,事务将被自动提交。你不需要担心在使用transaction方法时还需要亲自去手动还原或提交事务:DB::transaction(function(){DB::table('users')->update(['votes'=>1]);DB::table('posts')->delete();});手动操作事务如果你想手动处理事务并对还原或提交操作进行完全控制,则可以在DBfacade使用 beginTransaction 方法:DB::beginTransaction();你也可以通过rollBack方法来还原事务:DB::rollBack();最后,可以通过commit方法来提交这个事务:DB::commit();注意:DBfacade的事务方法也可以用来控制查询语句构造器及EloquentORM的事务。假设有要在数据库中存储一个知识点,这个知识点同时属于两个不同的考点,也就是...

laravel 项目表单中有csrf_token,但一直报错419错误 解决redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persi

laravel项目表单中有csrf_token,但一直报错419错误,因为项目中使用到Redis缓存,在强制关闭Redis后出现的问题,查询laravel。log文件查找相关问题安装redis后在设置过期时间时,突然报错:MISCONFRedisisconfiguredtosaveRDBsnapshots,butitiscurrentlynotabletopersistondisk.Commandsthatmaymodifythedatasetaredisabled,becausethisinstanceisconfiguredtoreporterrorsduringwritesifRDBsnapshottingfails(stop-writes-on-bgsave-erroroption).PleasechecktheRedislogsfordetailsabouttheRDBerror. 究其原因是因为强制把redis快照关闭了导致不能持久化的问题,在网上查了一些相关解决方案。通过stop-writes-on-bgsave-error值设置为no即可避免这种问题。&nbs...
首页上一页...45678...下一页尾页