Laravel 5.2+ 使用url()全局函数返回前一个页面的地址

注意:文章标题中5.2+表示该文章内容可向上兼容,适用于Laravel版本5.2及更高(目前最新为5.6),但不可向下兼容,即不适用于5.2版本以下。推荐大家花一点点时间,将自己的Laravel更新至5.6版本。在后台开发时,我们经常需要获取用户之前操作页面的地址并生成一个返回之前页面的链接。而Laravel从版本5.2+开始,便提供了一系列全局帮助函数(HelperFunctions)来简化我们的工作:https://laravel.com/docs/5.2/helpers#method-url要查看更高版本的相应文档,请将以上链接中的版本号替换为相应版本即可。帮助函数中有一些很常用到的,比如Paths中的public_path及storage_path,Miscellaneous中的dd、view、session等。而今天我们要用到的是URLs中的函数://返回当前页面的地址(不包含参数)url()->current();//返回当前页面的完整地址(包含参数)url()->full();//返回前一个页面的地址(包含参数)url()->previous();例如,...

laravel中如何在模型中自关联?

https://segmentfault.com/q/1010000007926567在模型中声明一对多的关系,关联表本身。parent_id对应父记录的id。我在sof中查阅到很多这样的写法:publicfunctionbelongsToParent(){return$this->belongsTo(self::class,"parent_id");}publicfunctionhasManyChildren(){return$this->hasMany(self::class,"parent_id");}但是我通过模型的with('belongsToParent')查不到关系,parent_id有值,关联的relations却为null。请问这种写法是对的吗?为什么查不到关联模型呢? belongsTo的用法和hasOne的效果是一样的,只是参数反过来。publicfunctionparent(){return$this->hasOne(get_class($this),$this->getKeyName(),'parent_id');}publi...

laravel实现批量添加数据

在使用laraveleloquent进行数据库操作的时候惊讶的发现这货居然不支持批量添加,看到网上很多人在循环里进行数据库插入操作来实现批量添加,我想说这样做是很损失性能滴!好在框架的DB门面里的insert方法可以进行批量插入。代码如下:$data=[['name'=>'111'],['name'=>'222'],];DB::table('xxx')->insert($data);但这样有个问题就是表名每次都要手动来输入。而我们一般情况下是在模型中进行数据库操作,并且会封装一些必要的方法到一个基类上。好在laravel模型为我们提供了一个getTable()方法可以得到当前模型的表名。这样我们就可以把批量操作放入一个公有的方法中去。代码如下:classBaseModelextendModel{publicfunctionaddAll(Array$data){$rs=DB::table($this->getTable())->insert($data);return$rs;}}classUserextendBaseModel{}//使用时$user=new...

Laravel设置软删除及其恢复系列操作

软删除及其相关实现在模型类中要使用SoftDeletestrait并设置$date属性数组<?phpnamespaceAppModels;useIlluminateDatabaseEloquentModel;useIlluminateDatabaseEloquentSoftDeletes;classStudentextendsModel{useSoftDeletes;//设置表名public$table='students';//设置主键public$primaryKey='id';protected$dates=['delete_at'];}数据迁移中软删除字段写法<?phpuseIlluminateDatabaseSchemaBlueprint;useIlluminateDatabaseMigrationsMigration;classAlterStudentsDeletedAtextendsMigration{/***Runthemigrations.**@returnvoid*/publicfunctionup(){Schema::table('students',...

50分钟学会Laravel 50个小技巧(基于laravel5.2,仅供参考)

转载请注明:转载自Yuansir-web菜鸟|LAMP学习笔记本文链接地址:50分钟学会Laravel50个小技巧原文链接:《50LaravelTricksin50Minutesbywillroth》Eloquent1.Automaticmodelvalidation   classPostextendsEloquent   {       publicstatic$autoValidate=true;       protectedstatic$rules=array();           protectedstaticfunctionboot()       {   &nbs...

Laravel渴求式加载(比较容易理解理解load与with关系)

渴求式加载当以属性方式访问Eloquent关联关系的时候,关联关系数据是「懒惰式加载」的,这意味着关联关系数据直到第一次访问的时候才被加载。不过,Eloquent还可以在查询父级模型的同时「渴求式加载」关联关系。渴求式加载缓解N+1查询问题,要阐明N+1查询问题,查看关联到Auth的Book模型:Laravel学院文档:https://laravelacademy.org/post/9584.html根据官方文档,创建两个表,不多说.新建两个model模型phpartisanmake:modelAuthphpartisanmkae:modelBook然后创建对应的表关联关系<?phpnamespaceApp;useIlluminateDatabaseEloquentModel;classBookextendsModel{protected$table='book';publicfunctionauth(){return$this->belongsTo('AppAuth');}}在控制器中获取书的作者信息publicfunctionlst(){$books=Book::all...

Laravel技巧:使用load、with预加载 区别

1、使用load$posts=Post::all();$posts->load('user');2、使用with$posts=Post::with('user')->all();懒加载是什么意思呢?两张表,目录表和教材表。多个教材属于一个目录,那么利用懒加载,你就可以通过先把目录读出来,然后把这些与目录有关的教材一下子读出来完。这样进行数据库读取的次数就少了。所以我从国外的一个网站上搬来了with和load的用法,大家自行领悟吧。with()load()Bothaccomplishthesameendresults—eagerloadingarelatedmodelontothefirst.Infact,theybothrunexactlythesametwoqueries.Thekeydifferenceisthatwith()eagerloadstherelatedmodelupfront,immediatelyaftertheinitialquery(all(),first(),orfind(x),forexample);whenusingload(),yourunt...

Laravel 5.6 模型关联 user 表后查询 user 表数据只能获取第一条数据,不知道怎么获取第二条

按照开发手册的说法,肯定是指令不够全,附代码图如果,tests是文章表,users是用户表test.com/tests/1是id为1的文章地址(get访问)假如TestsController是控制器show是文章详情publishfunctionshow(Test$test,Request$requset){$mode=$test::find($requset->id);//获取id为1的文章模型$name=$mode->user->name;//使用动态属性获得User模型,在取到name属性var_dump($mode->user()->get()->toArray());//可以看看都是什么}会生成相关sql#获取文章模型select*fromtestswhereid=1limit1#使用文章模型的user放法,?是上面查到的user_idselect*fromuserswhereid=?limit1所以这个有一个N+1的问题,就是当你的文章模型有N的时候,你要得到每一个文章作者的名字,就会产生1个文章查询和N个用户查询,所以有一个with方法...

Laravel5.5+ 区分前后端用户登录

Laravel的用户认证是通过AuthFacade门脸实现的,手动认证可是使用 Auth::login()或Auth::attempt()这两个方法实现.以下内容纯属个人实现,也许有更优的实现方式.对于识别前后端的用户,可以使用Auth::guard()方法实现,前端默认为web看守,Auth::guard('web'),后端用户使用admin看守,Auth::guard('admin').1.新建guard看守在config/auth.php中新建admin看守'guards'=>['web'=>['driver'=>'session','provider'=>'users',],'api'=>['driver'=>'token','provider'=>'users',],'admin'=>['driver'=>'session','provider'=>'users']]看守的提供者provider不变,还是users.'providers'=>['users'=>['driver'=>'el...

laravel添加model文件夹,需要改动的地方

首先,将appUser(等model文件),移入APPmodellists文件夹中,方便整理第二,修改模型中命名空间和引用其他model的路径第三,将文件夹appadmin中的控制器文件,全部移入到apphttpcontrollersadmin文件夹,便于管理第四,路由文件的修改,添加上对应的命名空间 namespace('admin')第五,APPproviders下文件,如果引用model文件对应修改引入路径  ...

Laravel 的十八个最佳实践

本文翻译改编自 Laravel的十八个最佳实践这篇文章并不是什么由Laravel改编的SOLID原则、模式等。只是为了让你注意你在现实生活的Laravel项目中最常忽略的内容。 一个类和一个方法应该只有一个职责。错误的做法:publicfunctiongetFullNameAttribute(){if(auth()->user()&&auth()->user()->hasRole('client')&&auth()->user()->isVerified()){return'Mr.'.$this->first_name.''.$this->middle_name.''$this->last_name;}else{return$this->first_name[0].'.'.$this->last_name;}}推荐的做法:publicfunctiongetFullNameAttribute(){return$this->isVerifiedClient()?$this-...

Laravel Eloquent ORM 时如何查询表中指定的字段

导读:在使用LaravelORM的Model方法find,get,first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应...原文地址:http://www.bcty365.com/content-153-5939-1.html在使用LaravelORM的Model方法find,get,first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系,那么如何在ORM查询时只返回数据表中指定字段的数据呢?很多时候,文档上没有写明的用法需要我们去看源码来探究的,下面我们就来看一下这三个方法的实现。由于ORM依赖了QueryBuilder来实现查询,在QueryBuilder的源码里通过查看get,first方法的实现可以到,他们都可以接收一个数组参数来指定要查询的字段:find方法的实现是在IlluminateDatabaseEloquentBuilder类里,如下:/***Findamodelbyitsprimarykey.*www.bcty365.com*@parammixed$id*@p...

深入理解 Laravel 中 config 配置加载原理

Laravel的配置加载其实就是加载config目录下所有文件配置。如何过使用phpartisanconfig:cache则会把加载的配置合并到一个配置文件中,下次请求就不会再去加载config目录。LoadEnvironmentVariables .env环境配置加载。如果缓存配置是不会加载.env的LoadConfiguration 判断是否缓存配置是,则直接加载配置,不会加载config目录所有文件了否,则加载config目录所有PHP文件内核启动的时候。加载以下启动类IlluminateFoundationHttpKernel类protected$bootstrappers=[IlluminateFoundationBootstrapLoadEnvironmentVariables::class,//加载.envIlluminateFoundationBootstrapLoadConfiguration::class,//加载config配置...];本文重点讲解第二个config配置加载。第一个请查看 深入理解Laravel中.env文件读取Lo...

Laravel自定义 封装便捷返回Json数据格式引用

一般返回数据格式returnresponse()->json(['status'=>'success','code'=>200,'message'=>'关注成功']);returnresponse()->json(['status'=>'fail','code'=>500,'error'=>'关注失败',]);基类控制器<?phpnamespaceAppHttpControllers;useIlluminateFoundationBusDispatchesJobs;useIlluminateRoutingControllerasBaseController;useIlluminateFoundationValidationValidatesRequests;useIlluminateFoundationAuthAccessAuthorizesRequests;classControllerextendsBaseController{useAuthorizesRequests,DispatchesJobs,ValidatesReque...

关于Laravel中使用response()方法调用json()返回数据unicode编码转换的问题解决

在网上找了好久没有找到,之后一步一步测试,发现了Laravel还是很强大的,解决方案如下: publicfunctionresponse(){//返回json数据$data=['errCode'=>0,'errMsg'=>'这是一条错误信息','data'=>'这是一条数据信息',];returnresponse()->json($data)->setEncodingOptions(JSON_UNESCAPED_UNICODE);}返回结果是:{"errCode":0,"errMsg":"这是一条错误信息","data":"这是一条数据信息"}改进:你的方法每次都要设置一次麻烦,而且json请求时,验证表单通不过时,laravel自动响应的汉字还是默认的这个方法一劳永逸,彻底解决,直接文件vendorlaravelframeworksrcIlluminateHttpJsonResponse.php的构造函数$this->encodingOptions=$options;//修改前$this->encodingOptions=JSON_...
首页上一页...56789...下一页尾页