
Laravel
文章平均质量分 87
lamp_yang_3533
你又可以了
展开
-
Laravel 中设置了withoutOverlapping的定时任务失败后,无法重新自动运行的解决方法
问题描述在 Laravel 中,想要管理运行 Console/Kernel.php 中的多个计划任务命令,只需开启任务调度器即可。开启调度器,只需添加到服务器的 Cron 条目为:* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1这样,该 Cron 条目每...原创 2019-05-26 18:29:08 · 7284 阅读 · 0 评论 -
API 系列教程(三):使用 API Resource 来创建自定义 JSON 格式的 API
上一篇教程中我们通过 jwt-auth 实现了 Laravel 的 API 认证。用户请求登录接口 http://apidemo.test/api/auth/login 登录成功后,获取到 JSON 响应,响应头会带有 token 信息。Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjE1LCJpc3MiOiJo...原创 2018-12-16 21:26:04 · 2510 阅读 · 0 评论 -
API 系列教程(二):结合 Laravel 5.5 和 Vue SPA 基于 jwt-auth 实现 API 认证
上一篇我们简单演示了 Laravel 5.5 中 RESTful API 的构建、认证和测试,本教程将在上一篇教程的基础上进行升华。我们将结合 Laravel 和 Vue 单页面应用(SPA),在它们的基础上引入 jwt-auth 实现 API 认证,由于 Laravel 集成了对 Vue 的支持,所以在 Laravel 中使用 Vue 也是如鱼得水,非常顺畅,整篇教程涉及到的工具包括:N...原创 2018-12-09 15:01:48 · 1622 阅读 · 0 评论 -
API 系列教程(一):基于 Laravel 5.5 构建 和 测试 RESTful API
随着移动开发和 JavaScript 框架的日益流行,使用 RESTful API 在数据层和客户端之间构建交互接口逐渐成为最佳选择。在本系列教程中,将会带领大家基于 Laravel 5.5 来构建并测试带认证功能的 RESTful API。RESTful API先要了解什么是 RESTful API。REST 是 Representational State Transfer 的缩写...原创 2018-12-02 18:01:58 · 1812 阅读 · 1 评论 -
Laravel 5.5 Eloquent ORM - 模型数据转化
简介当构建 JSON API 时,经常需要转化模型和关联关系为数组或 JSON。Eloquent 提供了便捷方法以便实现这些转换,还可以控制哪些属性被包含到序列化中。转化为数组想要转化模型及其加载的关联关系为数组,可以使用 toArray 方法。toArray 方法是递归的,所有属性及其关联对象属性(包括关联的关联)都会被转化为数组。$user = App\User::w...原创 2018-11-26 23:44:23 · 1615 阅读 · 0 评论 -
Laravel 5.5 Eloquent ORM - 访问器和修改器
简介访问器和修改器允许你在获取模型属性或设置其值时格式化 Eloquent 属性。例如,你可能想要使用 Laravel 加密器对存储在数据库中的数据进行加密,并且在 Eloquent 模型中访问时自动进行解密。除了自定义访问器和修改器,Eloquent 还可以自动转换日期字段为 Carbon 实例甚至将文本转换为JSON。访问器 & 修改器定义访问器要定义一个访问器...原创 2018-11-25 21:31:22 · 930 阅读 · 0 评论 -
Laravel 5.5 Eloquent ORM - 快速入门
简介Laravel 内置的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现。每张数据表都对应一个与该表进行交互的模型(Model),通过模型类,你可以对数据表进行查询、插入、更新、删除等操作。定义模型我们从创建一个 Eloquent 模型开始,模型类默认位于 app 目录下,但推荐将模型存放在 app/Models 目录下。所有...原创 2018-11-16 22:50:28 · 688 阅读 · 0 评论 -
Laravel 5.5 Eloquent ORM - 关联关系
简介数据表经常要与其它表做关联,比如一篇博客文章可能有很多评论,或者一个订单会被关联到下单用户。Eloquent 让组织和处理这些关联关系变得简单,并且支持多种不同类型的关联关系:一对一 一对多 多对多 远层一对多 多态关联 多对多的多态关联定义关联关系关联关系以 Eloquent 模型类方法的方式定义。和 Eloquent 模型本身一样,关联关系也是强大的查询构建...原创 2018-11-18 20:15:07 · 625 阅读 · 0 评论 -
Laravel 5.5 数据库 - 填充器
简介Laravel 使用填充类提供了一个简单方法来填充测试数据到数据库。所有的填充类都位于 database/seeds 目录。填充类的类名完全由你自定义,但最好还是遵循一定的规则,例如 UsersTableSeeder 等。在 Laravel 中,默认会提供一个 DatabaseSeeder 示例类。从这个类中,你可以使用 call 方法来运行其他填充类,从而允许你控制数据的填充...原创 2018-10-29 23:10:37 · 492 阅读 · 0 评论 -
Laravel 5.5 底层原理:生命周期
Laravel 框架的生命周期原创 2018-12-23 09:47:43 · 947 阅读 · 1 评论 -
Laravel 5.5 底层原理:服务提供者
简介服务提供者(Provider)是所有 Laravel 应用程序的引导中心。你的应用程序以及 Laravel 的所有核心服务都是通过服务提供者进行引导。在这里,我们说的「引导」其实是指注册,通常,这意味着注册服务,包括注册服务容器绑定、事件监听器、中间件甚至路由。服务提供者是应用配置的中心。config/app.php 文件中有一个 providers 数组。数组中的内容是应...原创 2019-01-04 23:01:19 · 755 阅读 · 0 评论 -
Laravel 5.5 底层原理:服务容器
简介Laravel 服务容器是用于管理类的依赖和执行依赖注入的工具。依赖注入的本质是通过构造函数或者某些情况下通过 setter 方法,将类的依赖注入到类中。来看一个简单的例子:<?phpnamespace App\Http\Controllers;use App\User;use App\Repositories\UserRepository;use App\...原创 2019-01-01 13:27:36 · 963 阅读 · 2 评论 -
PHP Fatal error-Uncaught ReflectionException-Class log does not exist
问题描述在 Laravel 5.2 版本中执行 php artisan optimize 命令时,报错信息如下:PHP Fatal error: Uncaught ReflectionException: Class log does not exist ...原因分析很有可能就是环境变量配置文件 .env 中的某个配置项格式不对。以下几种都是正确的写法。TEST_NAM...原创 2019-05-05 16:12:14 · 5032 阅读 · 0 评论 -
Laravel 大数据量分块处理
chunk() 的用法有时,我们可能会一次性查出很大的结果集(上万条记录),这样就很可能导致内存溢出。Laravel 框架的 chunk() 方法,可以将数据分块,每次只查询指定数量的数据块,交给回调函数处理。从而在处理大量数据集合时,能够有效减少内存消耗。User::where('status', 0)->chunk(100, function ($users) { ...原创 2019-02-24 15:10:27 · 10198 阅读 · 4 评论 -
Laravel 5.5 队列
简介Laravel 队列为不同的后台队列服务提供了统一的 API,例如 Beanstalk,Amazon SQS,Redis,甚至其他基于关系型数据库的队列。队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。队列的配置文件存放在 config/queue.php。每一种队列驱动的配置都可以在该文件中找到,包括数据库、Beanstalkd、Am...原创 2019-02-08 16:35:44 · 1143 阅读 · 0 评论 -
Laravel 5.5 定时任务调度
简介Cron 定时任务是 Linux 中非常常用的功能。通过 Cron 脚本能使计划任务定期地在系统后台自动运行。Crontab 是用来记录在特定时间运行的 Cron 的一个脚本文件。在服务器上通过 crontab -e 来新增或编辑 Cron 条目,通过 crontab -l 查看已存在的 Cron 条目列表。在以前,开发者要为每一个需要执行的定时任务编写一个 Cron 条目,这...原创 2019-02-07 11:42:44 · 1901 阅读 · 0 评论 -
Laravel 5.5 Artisan 命令
简介Artisan 是 Laravel 自带的命令行接口,它为我们提供了很多有用的命令。想要查看所有可用的 Artisan 命令,可使用 list 命令。php artisan list每个命令都可以用 help 指令显示命令描述及命令参数和选项。想要查看帮助信息,只需要在命令前加上 help 就可以了。php artisan help list当然,也可以通过 -...原创 2019-02-03 11:46:24 · 1052 阅读 · 0 评论 -
Laravel 门面自动补全工具 laravel-ide-helper
简介当我们在 PhpStorm 编辑器中,开发 Laravel 框架的项目时,很多类方法都不能自动补全和定位,比如 Facade 门面的方法,DB::table()、Route::get() 等。laravel-ide-helper 工具可以解决这个问题。安装和配置首先,通过 composer 安装 laravel-ide-helpercomposer require --d...原创 2019-02-02 16:25:26 · 3121 阅读 · 0 评论 -
Laravel 5.5 底层原理:契约(Contracts)
简介Laravel 中的契约是指框架提供的一系列定义核心服务的接口(interface)。例如,Illuminate\Contracts\Queue\Queue 契约定义了队列任务所需的方法,而 Illuminate\Contracts\Mail\Mailer 契约定义了发送电子邮件所需的方法。框架对每个契约都提供了相应的实现。例如,Laravel 提供了具有各种驱动的队列实现和由 S...原创 2019-01-20 12:10:33 · 868 阅读 · 0 评论 -
Laravel 5.5 底层原理:门面(Facades)
简介Facades 为应用服务容器中的绑定类提供了一个“静态”接口。Laravel 内置了很多 Facades ,可以访问绝大部分 Laravel 的功能。Laravel 的门面作为服务容器中底层类的“静态代理”,相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。Laravel 的所有门面都定义在 Illuminate\Support\Facades 命名...原创 2019-01-06 16:39:43 · 1323 阅读 · 9 评论 -
Laravel 5.5 数据库 - 分页
Laravel 的分页器与查询构建器和 Eloquent ORM 集成在一起,提供了基于数据库结果集的分页。分页器生成的 HTML 兼容 Bootstrap CSS 框架。基本使用基于查询构建器进行分页有多种方式实现分页功能,最简单的方式就是使用查询构建器或 Eloquent 查询提供的 paginate 方法。该方法基于当前用户查看页自动设置合适的偏移(offset)和限制(li...原创 2018-10-21 18:30:48 · 470 阅读 · 0 评论 -
Laravel 5.5 数据库 - 迁移
简介所谓迁移就像是数据库表结构的版本控制,这种机制允许团队轻松的编辑并共享数据库的表结构。迁移通常和 Laravel 的 schema 构建器结合,从而可以很容易地构建应用的数据库表结构。如果你曾经频繁告知团队成员需要手动添加字段到本地数据库的表结构以维护本地开发环境,那么这正是数据库迁移所致力于解决的问题。Laravel 的 Schema 门面提供了与数据库系统无关的创建和操纵表...原创 2018-10-28 22:16:35 · 574 阅读 · 0 评论 -
Laravel 5.5 数据库 - 查询构建器
简介数据库查询构建器提供了一个方便的流接口模式用于创建和执行数据库查询。查询构建器可以用于执行应用中绝大部分数据库操作,并且能够在 Laravel 支持的所有数据库系统上工作。注:流接口模式,也称作方法链,是一种设计模式。Laravel 查询构建器使用 PDO 参数绑定来避免 SQL 注入攻击,不再需要过滤以绑定方式传递的字符串。获取结果集从一张表中取出所有行DB 门面的 ...原创 2018-10-18 23:49:15 · 1259 阅读 · 0 评论 -
Laravel 5.5 控制器
简介控制器用于将相关的 HTTP 请求封装到一个类中进行处理,这些控制器类存放在 app/Http/Controllers 目录下。控制器入门定义控制器可使用 Artisan 命令快速创建一个控制器。php artisan make:controller UserController这样,会自动生成 app/Http/Controllers/UserController....原创 2018-07-17 23:15:09 · 1337 阅读 · 0 评论 -
Laravel 5.5 注意事项和常见问题
config/app.php 配置文件修改 config/app.php 中的时区 timezone 配置:'timezone' => 'Asia/Shanghai',请将时区修改为你当前所在的时区。.env 环境变量配置文件该文件非常重要,里面存储着和开发环境相关的变量配置,比如数据库配置。请及时将数据库配置修改为和你的开发环境相关的配置。注意: 请勿滥用 .env 环境变量配置文件,和环...原创 2018-07-02 23:07:40 · 1170 阅读 · 0 评论 -
Laravel 5.5 注册登录
快速入门Laravel 提供了几个预置的认证控制器,位于 App\Http\Controllers\Auth 命名空间下。RegisterController 用于处理新用户注册, LoginController 用于处理用户登录认证, ForgotPasswordController 用于处理重置密码邮件链接, ResetPasswordController 包含重置密码逻辑,每个控制器都使用 ...原创 2018-07-08 20:22:15 · 3410 阅读 · 0 评论 -
Laravel 5.5 的目录结构
默认的 Laravel 应用结构旨在为不同大小的应用提供一个好的起点。当然,你可以按照喜好整理应用的目录结构。Laravel 没有严格地限制任何给定的类的位置,只要它们能被 Composer 自动加载即可。.env 文件.env 文件是 Laravel 5.5 的环境变量配置文件,用来存放那些会随着环境的变化而变化的变量,比如数据库配置。在不同的环境(比如本地环境和线上环境),数据库的配置很可能不...原创 2018-06-18 17:00:50 · 1200 阅读 · 0 评论 -
Windows 搭建 Laravel 的 Homestead 开发环境
开发 Laravel 应用,也可以使用 WAMP、XAMPP、PHPStudy 等集成环境,但对于一个优秀的开发者, 应毫不犹豫地选择 Homestead 作为 Laravel 应用的开发环境。强烈推荐使用 Homestead 作为 Laravel 5.5 的 开发环境。你需要明白的四个主要概念:VirtualBox:是 Oracle 公司的虚拟机软件。Vagrant: 是一个基于Ruby的虚拟机...原创 2018-06-24 17:30:34 · 1261 阅读 · 1 评论 -
Laravel 5.5 的安装与配置
安装服务器要求Laravel 5.5 框架对PHP版本和扩展有一定要求:PHP >= 7.0.0PHP OpenSSL 扩展PHP PDO 扩展PHP Mbstring 扩展PHP Tokenizer 扩展PHP XML 扩展满足以上需求之后,就可以开始安装 Laravel 了。【 这些要求 Homestead 都已经满足了,强烈推荐使用 Homestead 环境,当然 Docker 也很不...原创 2018-06-16 15:22:39 · 4175 阅读 · 0 评论 -
Laravel 5.5 的 CSRF 保护
简介CSRF(跨站请求伪造)是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令。Laravel 可以轻松地保护应用程序免受 跨站请求伪造 (CSRF) 的攻击。Laravel 会自动为每个活跃用户的会话生成一个 CSRF「令牌」。该令牌用于验证经过身份验证的用户是否是向应用程序发出请求的用户。任何情况下当你在应用程序中定义 HTML 表单时,都应该在表单中包含一个隐藏的 CSR...原创 2018-06-23 21:01:28 · 1101 阅读 · 0 评论 -
Laravel 5.5 的中间件
简介Laravel 的中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。例如,Laravel 内置了一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件...原创 2018-06-22 23:13:24 · 846 阅读 · 0 评论 -
Laravel 5.5 HTTP 请求
访问请求实例在控制器中,获取当前 HTTP 请求实例,需要在构造函数或方法中,对 Illuminate\Http\Request 类进行依赖注入,这样当前请求实例会被服务容器自动注入:<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class UserController extends C...原创 2018-07-20 23:25:45 · 1171 阅读 · 0 评论 -
Laravel 5.5 HTTP 响应
创建响应字符串 & 数组所有的路由和控制器处理完业务逻辑之后都会返回一个发送到用户浏览器的响应,Laravel 提供了多种不同的方式来返回响应,最基本的响应就是从路由或控制器返回一个简单的字符串,框架会自动将这个字符串转化为一个完整的 HTTP 响应。Route::get('/', function () { return 'Hello World';});除了...原创 2018-07-22 11:05:33 · 854 阅读 · 0 评论 -
Laravel 5.5 视图 - Blade 模板引擎
Blade 简介Blade 是由 Laravel 提供的非常简单但功能强大的模板引擎,不同于其他流行的 PHP 模板引擎,Blade 在视图中并不约束你使用 PHP 原生代码。所有的 Blade 视图最终都会被编译成原生 PHP 代码并缓存起来直到被修改,这意味着对应用的性能而言 Blade 基本上是零开销。Blade 视图文件(也叫模板文件)使用 .blade.php 文件扩展名,都存放...原创 2018-08-12 15:31:35 · 2253 阅读 · 0 评论 -
Laravel 5.5 数据库 - 基本配置和操作
简介Laravel 中连接不同类型的数据库,对数据库进行增删改查操作都很简单,不论使用原生 SQL、还是查询构建器,还是 Eloquent ORM。目前,Laravel 支持四种类型的数据库系统:MySQL Postgres SQLite SQL Server配置应用的数据库配置位于 config/database.php 文件。需要注意的是:和运行环境相关的数据库配置...原创 2018-09-27 21:42:51 · 3876 阅读 · 0 评论 -
PHP 错误异常处理机制及 Laravel 框架底层的相应实现
错误和异常是很强大的工具,能帮助我们预期意料之外的事,使用优雅的方式捕获问题。不过,错误和异常很相似,容易让人混淆,二者都表示出问题了,都会提供错误信息,而且都有错误类型。然而,错误出现的时间比异常早,错误会导致程序脚本停止执行,如果可能,错误会委托给全局错误处理程序处理,有些错误是无法恢复的。对于高版本 PHP 我们基本上只需要处理异常,不用管错误,但我们仍然必须做好防御准备,因为 PHP 中很...原创 2018-09-27 00:59:24 · 1195 阅读 · 0 评论 -
Laravel 5.5 异常处理 & 错误日志
简介Laravel 默认已经为我们配置好了错误和异常处理,我们在 App\Exceptions\Handler 类中触发异常并将响应返回给用户。此外,Laravel 还集成了 Monolog 日志库以便提供各种功能强大的日志处理器,默认情况下,Laravel 已经为我们配置了一些处理器,我们可以选择单个日志文件,也可以选择记录错误信息到系统日志。配置调试模式配置文件 confi...原创 2018-09-24 17:45:42 · 6560 阅读 · 1 评论 -
Laravel 5.5 表单验证
简介Laravel 提供了多种方法来验证请求输入数据。默认情况下,Laravel 的控制器基类使用 ValidatesRequests trait,该 trait 提供了便捷方法通过各种功能强大的验证规则来验证输入的 HTTP 请求。快速入门先看一个完整的验证表单并返回错误信息给用户的示例。定义路由首先,我们假定在 routes/web.php 文件中包含如下路由:// ...原创 2018-09-16 20:11:43 · 1551 阅读 · 0 评论 -
Laravel 5.5 URL 生成
简介Laravel 提供了多个辅助函数来帮助我们在应用中生成 URL。这些函数主要用于在视图模板和 API 响应中构建链接,或者生成重定向响应。快速入门生成 URLurl 辅助函数可用于为应用生成任意 URL,并且生成的 URL 会自动使用当前请求的 scheme(HTTP or HTTPS) 和 host 属性:$post = App\Post::find(1);ech...原创 2018-08-24 23:09:17 · 1181 阅读 · 0 评论 -
Laravel 5.5 视图 - 多语言支持
简介Laravel 的本地化特性允许你在应用中轻松实现多语言支持。语言字符串默认存放在 resources/lang 目录中,该目录包含了应用支持的每种语言的子目录。所有的语言文件都返回一个键值对数组,例如,resources/lang/en/passwords.php 文件:<?phpreturn [ /* |----------------------...原创 2018-08-23 23:42:55 · 841 阅读 · 0 评论