
laravel
Laravel 底层原理研究、组件源码分析、生产环境解决方案
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
闲敲代码、落灯花
坚持写博客,一直在努力中
专注后端开发,喜欢Go和Python的PHP程序员,作为一个前端爱好者,对服务器运维比较有经验
同时也是一个个人站长:在网站:逐步前行STEP[https://www.hezehua.net] 记录我的工作与生活
展开
-
Laravel 发送邮件报错的解决方案:PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1.
在搭建好私人邮箱服务器后,正好做了一个共享主机的产品,就需要在申请共享主机后给用户发通知,遇到这个报错:PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /data/www/blog/原创 2020-06-19 02:14:07 · 2709 阅读 · 0 评论 -
Laravel核心技术解析(1)—— Composer 组件管理与自动加载
Composer作为PHP的组件化管理工具,实现了laravel框架的组件安装、更新、移除,以及自动加载功能,下面就深入解析这是如何实现的。使用Composer安装组件,首先需要创建composer.json文件,composer.json示例如下:我的个人博客:逐步前行STEP该文件定义了项目的基本信息以及所依赖组件的名称、版本、再执行composer install将所依赖组件安装...原创 2020-03-21 21:05:33 · 427 阅读 · 0 评论 -
Laravel 怎么查看执行的Sql语句
1、如果是使用Eloquent ORM操作数据库的话,在sql查询时可以调用toSql()方法来获取sql: App\User::where('name','like','%hezehua%')->toSql();2、如果是执行原生Sql查询,则不能使用toSql()方法了,而是开启查询日志: DB::enableQueryLog(); DB::sselect("select * ...原创 2019-12-30 01:36:55 · 3557 阅读 · 0 评论 -
Laravel服务提供者在平台短信服务中的应用
服务提供者是一个有效的将工具与业务解耦的方案,下面结合一个实用案例来解释服务提供者在实现提供基础服务的工具中的应用。服务提供者服务提供者是 Laravel 应用启动的中心,所有 Laravel 的核心服务都是通过服务提供者启动,通过使用服务提供者来管理类的依赖和执行依赖注入,可以很好地将一些底层服务与应用层代码解耦。短信服务短信服务对于一个系统来说,是基础的、通用的服务,不依赖于业务细节,...原创 2019-12-27 03:03:39 · 292 阅读 · 0 评论 -
Laravel 中使用Goutte + GuzzleHttp 组件设置 headers无效的原因探究以及解决方案
使用Goutte + GuzzleHttp 爬取网页时,如下代码中的请求头设置无效:$jar = CookieJar::fromArray([ "HMACCOUNT" => 'C0CDC28BD0110387', ], self::$host); $client = new GoutteClient(); $guz...原创 2019-11-07 03:28:11 · 5674 阅读 · 1 评论 -
Laravel中使用Eloquent时给查询的字段设置别名
示例$user->where('is_active',1)->get('id','account as username');该示例中取出account字段时用了as关键之设置别名,取出的数据中将包含id、username俩字段原创 2018-09-17 19:20:06 · 12429 阅读 · 0 评论 -
Laravel中的env函数获取不到确定存在的配置
今天重启服务器后发现网站有个报错,一看是获取配置出错,于是去检查配置,发现没问题,配置是正确的,于是想着换成getenv函数试试,还是不行,执行一遍composer install、composer update、composer dump-autoload还是无效,然后想起之前env配置不生效时使用的清除config缓存命令:php artisan config:clear,终于配置又生效了。...原创 2018-10-12 22:05:02 · 5547 阅读 · 0 评论 -
搭建NFS使多个服务器中的web项目共享图片资源
有一个使用laravel框架的项目,采用laravel自带的文件管理系统,还有一个使用laravel-admin扩展的管理端,更是依赖于自带的文件管理系统。因部署了多台服务器,需要打通数据,考虑了各种方案,比如fastdfs、oss,初步了解后发现无法完全满足需求:fastdfs:在文件的存取上保证了一致的路径,用户端的上传和图片压缩都影响不大,只要最终把文件上传到fastdfs就行,但是lar...原创 2018-10-16 03:18:02 · 1869 阅读 · 0 评论 -
Laravel5.6 实现小程序使用openid登陆、手机号验证码登陆、账户密码登陆三种登陆方式
目前开发小程序,按需求要实现3种登陆方式:1、微信授权登陆2、手机号、验证码登陆3、账户密码登陆我使用laravel自带的Auth认证机制,通过attempt方法进行账户验证,但是默认的认证机制必须包含password字段,而我的第1、3种登陆方式都没有password字段,所以需要深入源码了解认证机制的实现,然后再进行修改。首先,看看自带的Auth功能的LoginController怎...原创 2018-10-23 18:22:11 · 5608 阅读 · 5 评论 -
Laravel Collection 常用方法(1)
1、first返回集合第一个通过指定测试的元素:collect([1, 2, 3, 4])->first();// 1collect([1, 2, 3, 4])->first(function ($value, $key) { return $value > 2;});// 32、last返回集合中,最后一个通过指定测试的元素:colle...原创 2019-07-19 15:08:14 · 2215 阅读 · 2 评论 -
单例测试phpunit
1、执行单例测试./vendor/bin/phpunit2、执行指定单例测试文件./vendor/bin/phpunit tests/BlogTest.php3、执行指定测试函数./vendor/bin/phpunit --filter testPostArticle4、执行指定文件的指定测试函数./vendor/bin/phpunit --filter testPos...原创 2019-07-19 15:13:23 · 369 阅读 · 0 评论 -
支付宝支付同步回调url中携带参数的两种方法
1、 如果要传递的参数是my_data,可以先将该参数添加到回调的url上:$return_url = "http://abcdefg.com/return_url?my_data=hello";当支付宝同步回调该url时,会在该url上增加其它字段,在验证之前得把该参数从$_GET剔除 $arr=$_GET; unset($_GET['my_data...原创 2018-09-13 02:18:37 · 20184 阅读 · 2 评论 -
Laravel + MongoDB 数组字段相关查询
1、$exist查询 是否存在这个字段//查询所有存在标签你字段的博客App\Blog::where(['tags'=>['$exist'=>true]])->get()1、$in查询 是否存在 【数组字段中的元素在列表中出现】//查询所有包含标签tag_a或者tag_b的博客App\Blog::whereRaw(['tags'=>['$in'=&g...原创 2019-09-03 13:37:40 · 1735 阅读 · 0 评论 -
共用数据库和上传的文件的laravel-admin 和 laravel 项目中文件保存路径的配置
laravel中的配置:1、public中创建storage的软连接:ln -s /home/nginx/blog/storage/app/public2、设置权限chown -R nginx:nginx storagechmod g+rwx storageLaravel-admin的配置1、public中创建storage软连接:ln -s /ho...原创 2018-08-17 19:57:18 · 2480 阅读 · 0 评论 -
Composer自动加载(一)
Composer是PHP的基于项目的包管理工具,它本身集成一个autoloader,支持PSR-4,PSR-0,classmap,files autoloading.原创 2018-08-12 00:56:25 · 457 阅读 · 0 评论 -
Laravel定时任务的每秒执行
laravel中的任务调度可以不将每条命令都写入crontab,便于管理维护,而且可以基于laravel框架环境运行,而不需写独立的脚本执行,非常方便,但是最小的执行间隔也是一分钟,要想达到每秒执行的效果,就要借助shll脚本了,在shell脚本里循环60次每秒执行schedule:run命令,就达到了秒级定时任务的效果,以下是我使用的shell脚本:!/bin/bashstep=1 #间...原创 2018-07-27 16:33:20 · 9226 阅读 · 0 评论 -
laravel 关联关系之多态关联
多态关联文章、作者与收藏的关联关系:收藏既可以是对文章的收藏,也可以是对作者的收藏 表:artist: 字段:id name 表:article: 字段:id title content 表:favorites: 字段:id favorite_type favorite_idclass favorites extents model{...... public fu...原创 2018-04-17 02:07:36 · 1874 阅读 · 0 评论 -
laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
有一个这样的需求: 当商品设置为立即上架时,通过审核就进入上架状态,当设置为保存时,通过审核就进入未上架状态。 所以,需要在保存前根据提交的审核状态和设置的方式得到商品状态再保存,而通过$form->model()->attribute_name只能获取提交后的值,不能更改。 Google之后发现了已经有解决方案:可以修改提交表单时的逻辑吗 #375 在模型中添加如下方...原创 2018-04-24 01:59:55 · 18071 阅读 · 0 评论 -
laravel-admin form中的switch控件 不改变状态提交后值为0
我把一个字段设默认值为0 需要审核操作 通过设为1 不通过设为2$states = [ 'on' => ['value' => 1, 'text' => '通过', 'color' => 'success'], 'off' => ['value' => 2, 'text' => '不...原创 2018-04-24 02:06:08 · 3518 阅读 · 0 评论 -
Laravel+passport 实现API认证
1、通过Composer安装Passportcomposer require laravel/passport2、在配置文件app.php中的providers数组中注册Passport服务:Laravel\Passport\PassportServiceProvider::class,3、生成用于存放客户端和访问令牌的数据表php artisan migrate...原创 2018-05-02 20:42:14 · 1681 阅读 · 0 评论 -
Laravel Eloquent关联模型查询设置查询条件与指定字段
1、直接获取关联模型:$user->posts()->where('created_at‘,'>',date('Y-m-d H:i:s',time()))->orderBy('collection')->get(['id','title','content']);2、渴求式加载关联模型:$users-lo原创 2018-05-13 17:57:48 · 17749 阅读 · 0 评论 -
Laravel项目迁移步骤
1、在新的目录中克隆git远程版本库 2、执行composer install安装依赖 3、执行php artisan key:generate生成key 4、如果文件存储中使用了软链接,先在新项目目录里删除软连接,再执行 php artisan storage:link重新生成软链接,不然迁移后的项目中将无法访问上传的文件。...原创 2018-05-26 15:57:38 · 3429 阅读 · 0 评论 -
laravel-admin grid中使用switch操作一对一关联属性(源码探究到功能实现)
项目中有一个商品表(production) ,有一个库存表(repertory),两者一对一关系,production有发布字段(release),需求是在repertory的grid中,有一个switch开关,用于发布production。 如果直接使用 grid−>column(′production.release′)−>switch(grid−>column(′...原创 2018-06-12 16:33:57 · 6364 阅读 · 0 评论 -
laravel-admin grid中使用的switch必须form中同时具有switch才能生效的解决方案
laravel-admin中的grid使用switch时必须在form里使用switch,但有时候想单独作为一种操作,不想放在form中被编辑,就需要绕过这种限制,根据laravel-admin的源码可知,所有的默认的更新操作都是通过update函数来处理,而在这个函数中又调用了prepare函数,将该模型字段与关联关系字段分开,而分开的依据就是与form中的列进行比较,所以必须保证所有字段都在f...原创 2018-06-13 01:17:28 · 4808 阅读 · 0 评论 -
laravel-admin 在指定的相册下添加照片
相册与照片是一对多的关系,有以下需求: 1、点开一条相册数据看到相册的照片列表 2、为相册添加照片时,表单中要看到相册的基本信息以下是实现步骤: 第一步:构建带参数路由:$router->resource('manage/{albumid}/photo',Manage\PhotoController::class);第二步:处理操作对应的函数: (1)列表查看publ...原创 2018-06-08 02:12:31 · 1712 阅读 · 0 评论 -
laravel-admin 在列表页添加自定义按钮
为了添加自定义按钮,按官方文档分4步走: 1、先定义工具类app/Admin/Extensions/Tools/MyButton.php:<?phpnamespace App\Admin\Extensions\Tools;use Encore\Admin\Admin;use Encore\Admin\Grid\Tools\AbstractTool;use Illumin...原创 2018-06-08 02:18:31 · 18547 阅读 · 2 评论 -
laravel 使用事件系统统计浏览量
最近有一个商城项目中有统计商品点击量和艺术家访问量的需求,但又不想改动太多原来的代码,而点击与访问这两个动作是有明确触发点的,正好可以用laravel中的事件系统来做,在点击和访问对应的函数中产生这俩事件,监视器获取到之后,再将记录保存到数据库中,并更新计数。1、在 app\Providers\EventServiceProvider中注册监听器: /** ...原创 2018-06-09 20:07:25 · 3053 阅读 · 0 评论 -
查询某个条件在一个区间内的数据
Order::whereBetween(‘created_at’,[‘2018-07-01’,’2018-07-02’])->get()原创 2018-07-02 12:13:26 · 5259 阅读 · 1 评论 -
Laravel初探——安装
安装Composer1、curl -sS https://getcomposer.org/installer | php 2、mv composer.phar /usr/local/bin/composer 3、composer install安装Laravel1、composer global require “laravel/installer” 2、通过find / -...原创 2018-03-05 20:37:49 · 227 阅读 · 0 评论