真实的SQL如下: DELETE FROM events WHERE id = 12; laravel提供了许多语法糖,上面使用 find 和 delete 两个步骤,可以缩减为一个方法 destroy...其实原理很简单,就是为模型追加一个全局作用域,为每个查询子句追加上如下筛选条件: WHERE deleted_at IS NULL laravel已经为我们写好这部分逻辑了,在模型内引入如下trait:...Carbon 进行实例化操作。...这样操作非常有用,因为误删除的数据,随时可以通过设置 deleted_at = null 而恢复到正常的业务流程中,比如删除的用户,删除的订单,等等其他资源。...,通过创建迁移文件,修改数据库表,追加软删除字段。
前言 在我们过去的Laravel项目中,经常需要用到time_ago这样的字段,并将其转换为我们熟悉的本地语言,可以实现的方式有很多,比如编写一个time_ago的辅助函数将其转换成本地,或采用carbon...的官方文档时,发现carbon是支持多语言的,也就是上面的事情,carbon都实现过了…(这为我们的技术债又添上了一笔) 如果我们想支持中文的话,我们可以为模型上添加以上方法 public function...语言支持:https://carbon.nesbot.com/contribute/translate/ carbon2.0默认在laravel5.8开始支持,如果是低于该版本的话,可以通过以下方式来使用...carbon2.0,如laravel5.6 在composer.json中添加以下选项 { "require": { "nesbot/carbon": "2.24.0 as 1.39.0",..."kylekatarnls/laravel-carbon-2": "^1.0.0" } } 然后执行composer update来更新我们的依赖项 composer update 最后送上
laravel模型的精巧设计使得我们操作数据层逻辑更加得心应手。 [图片] 本文我们来说说模型在读写数据中所使用的技巧。...日期时间格式化 先从最常用的地方着手,比如在迁移文件内使用的 timestamps方法,就是在表内生成 created_at和updated_at两个 datetime 类型的字段,用于标记该记录的创建时间和更新时间...laravel框架继承了广泛使用稳定可靠的 Carbon 类库用于操作日期时间。...,添加如下属性定义: protected $dates = ['created_at','updated_at','started_at']; 那么这三个字段都会使用 Carbon 进行格式化,在访问模型对象属性时...,就会返回该Carbon对象。
) ))- setFormatter(new Monolog\Formatter\LineFormatter(null, null, true, true)) ); }); 添加以后写入日志文件为:...-rw-r--r-- 1 web web 93 Dec 18 15:52 laravel-2017-12-17 -rw-r--r-- 1 web web 279 Dec 18 16:10 laravel...-2017-12-18 参考:Laravel 的错误和日志记录 或者 创建app\Providers\LogServiceProvider.php 文件 修改 config\app.php providers...\Carbon; class LogServiceProvider extends ServiceProvider { protected $log_file; /** * Bootstrap...\Carbon; use Monolog\Logger;; use ReflectionClass; class LogServiceProvider extends ServiceProvider {
所以还是按照Laravel的模式重新写了一版并提交到了 GitHub 中,另外 Packagist 也发布了。 下面简单介绍一下。...首先创建项目使用如下命令: composer create-project wowangjuanzi/migrate 创建好后查看文件目录 $ tree ./migrate/ -L 3 ..../nesbot/carbon/bin/carbon │ └── var-dump-server -> .....console.php是我自己定义的,类似Laravel中的artisan,不过我也创建了一个软链artisan->console.php。方便进行适应。...DB_USERNAME=root DB_PASSWORD= 这里的配置跟Laravel相同,这里我就不过多描述了。
说明:本文主要聊一聊Laravel测试数据填充器Seeder的小技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...1、barryvdh/laravel-debugbar composer require barryvdh/laravel-debugbar --dev 2、barryvdh/laravel-ide-helper...LaravelIdeHelper\IdeHelperServiceProvider::class, 设计表的字段和关联 设计字段 按照上文提到的Category、Post、Comment和Tag之间的关系创建迁移...Laravel官方推荐使用模型工厂自动生成测试数据,推荐这么写的: //先输入指令生成database/seeds/CategoryTableSeeder.php文件: php artisan make...可以用DB::table()->insert()批量插入,拷贝ModelFactory.php中表的字段定义放入每一个表对应Seeder,当然可以有些字段为便利也适当修改对应假数据。
今天我们就以 Laravel Passport 为例,搭建一个SSO系统。...在 Laravel 中,可以使用 php artisan passport:client 命令来创建一个客户端。...在创建时,需要指定客户端类型为“password”或“client_credentials”,具体类型取决于你的需求。...auth()->user() : null;});接下来,我们需要创建一个路由来处理用户身份验证请求。可以使用 Laravel 自带的 AuthController 类来处理此请求。...假设我们有一个名为“App2”的应用程序,现在我们需要修改该应用程序的身份验证逻辑,以使用我们刚才创建的 Passport 客户端来进行身份验证。
5 下使用 HTML 和 Form 说明 Laravel 5 因为采用了另一套不同的架构, 而把 HTML 和 Form 类从核心里面移除....如果还想继续使用这两个类的话, 可以使用以下方法: 添加到 composer.json "require": { "illuminate/html": "~5.0" }, 更新...后来发现在laravel5 下面用 html即使按照上面设置 还是有问题, 根本搞不定,所以还是放弃了在laravel5下面使用html和form的想法,干脆还是先用laravel4吧,毕竟教程也多。.../ Class 'Carbon' not found 只要在/app/config/app.php 文件下增加一条别名'aliases' 'Carbon' => 'Carbon\Carbon'...Controller'; $obj = new $className; return $obj->lists(); }); 后来发现其实不用这么做 laravel自带的restful方式,轻松创建带参数的路由
引言 鉴于上一章标题引起一些开发同学的巨大兴趣,本文我们接着此种行文方式继续我们的“Laravel宇宙”系列文章。...我们在前一些章节,相继使用迁移创建了数据库结构,使用seeder为数据库填充了假数据,现在我们要对数据进行操作了。 哪些操作?增删改查!...为了演示查询构造器的功能用法,我们直接使用 DB 门面创建 QueryBuilder 对象。...,[true]); 为了编程愉悦感,还是回归我们的laravel推荐的链式操作的方式来演示更多更复杂的功能。...写在最后 本文轻描淡写地讲解了laravel中的查询构造器,讲了一个比较复杂的OR查询,因为使用闭包组装WHERE约束条件,所以会有些难以理解, 不过对比打印生成的SQL语句后,大家应该会豁然开朗!
Laravel 中默认使用的时间处理类就是 Carbon。...1 安装 通过 Composer 来安装 Carbon: composer require nesbot/carbon PS:由于 Laravel 项目已默认安装了此包,所以不需要再次执行上面的命令。...2 使用 你需要通过命名空间导入 Carbon 来使用,而不需每次都提供完整的名称。 use Carbon\Carbon; 2.1 获取当前时间 可以同now() 方法获取当前的日期和时间。...结果为 Carbon 类型的日期时间对象): echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00 echo...例如,你想给一个日期增加指定的天数,你可以使用 addDays方法。此外还提供了一个modify方法,参数格式为 +或 – 跟上值及单位。
这个功能非常常用,比如说最经典的就是电商中下订单后不支付。通常,我们会设定一个时间,比如 20 分钟内如果不支付,订单就自动取消。...这个功能就可以通过延时队列来实现,下订单后,马上向延时队列发送一条消息,并且设置延迟时间为 20 分钟。...我们先来看一下,在 Laravel 框架中,使用 Redis 队列驱动是如何实现这个延时队列功能的。...Laravel框架中使用 Redis 实现 在 Laravel 中,只需要在任务分发,也就是入队的时候,使用一个 delay() 方法就可以了。...我们使用 ZREMRANGEBYRANK 或者 ZPOPMIN 命令都可以拿到最新的数据,但是,Laravel 里面的更复杂一些。
引言 laravel模型提供了query builder对象用于组装查询条件并生成PSD查询语句,从而与数据库对话。...本期我们通过一些例子, 为大家提供避坑指南。 学习时间 为了方便起见,继续使用上一期的DB门面操作数据库,我们无需再贴出来定义好的Model对象了。这样可以节省很多空间。...为了演示多种用法,laravel的where查询子句,其实可以玩出花儿来,就多贴几种用法。...()->subDay()) ->where('trial', false); }) ->get(); 注意整个查询约束条件由2个组成,一个是vip,一个是1天前创建且不是试用期...写在最后 本文重点通过where和orWhere查询子句的对比,为大家说明查询条件构造时一定要分清楚约束对象, 以及连锁条件。
PHP开发环境 win下推荐使用largon集成开发环境。...修改当前项目的 composer.json 配置文件: composer config repo.packagist composer https://packagist.phpcomposer.com 创建项目...composer create-project --prefer-dist laravel/laravel learnLaravel 当你看到这里一下内容的时候说明你的项目创建成功 Writing.../tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated...successfully. > @php artisan key:generate --ansi Application key set successfully. laravel项目的结构如下 ?
Laravel uses Carbon for generating dates (https://laravel.com/docs/10.x/helpers#dates)....Laravel 使用 Carbon 生成日期(https://laravel.com/docs/10.x/helpers#dates)。...而 Carbon 又使用 PHP 的日期/时间函数 https://www.php.net/manual/en/ref.datetime.php。...Laravel 可以通过配置/app.php 中的时区设置为您实现这一功能。...如果没有特别设置,数据库可能会使用运行服务器的系统时间。 我们在 Laravel 应用程序中使用 now() 辅助函数生成一个日期,返回如下日期:"2023-10-13 16:00:00"。
Laravel uses Carbon for generating dates (https://laravel.com/docs/10.x/helpers#dates)....Laravel 使用 Carbon 生成日期(https://laravel.com/docs/10.x/helpers#dates)。...而 Carbon 又使用 PHP 的日期/时间函数 https://www.php.net/manual/en/ref.datetime.php。...如果没有特别设置,数据库可能会使用运行服务器的系统时间。我们在 Laravel 应用程序中使用 now() 辅助函数生成一个日期,返回如下日期:"2023-10-13 16:00:00"。...为此: 我们使用 now() 获取当前时间(由于我们更改了应用程序的时区,因此现在根据 Europe/Tallinn 时区生成日期),得到 2023-10-13 17:30:00我们从数据库中得到令牌的创建时间
\Carbon::parse('-10 years'); }) ->dd(); 异常渲染 如果定义了一个公共「响应」方法就可以对异常进行渲染。...Responsable 响应接口 Laravel 为响应方法新增了一个 Responsable 接口。 实现接口的类可以从控制器方法返回。...@endguest 前端预设 默认情况下 Laravel 5.5 为所有的新项目提供了 Vue.js 作为前端脚手架。...但是,新版的 Laravel 允许你使用 Artisan命令 preset 删除所有前端脚手架,再从几个预设中重新进行选择。...在运行创建新模型的命令时加上 -fm 选项可以为其创建工厂文件: $ php artisan make:model -fm Post # 或者你也可以在创建模型的时候,使用 --all 同时创建控制器
Laravel 在自动填充 created_at / updated_at 的时候,无法找到这两个字段。...修改时间戳默认列表 假如当前使用的是非 Laravel 类型的数据库,也就是你的时间戳列的命名方式与此不同该怎么办? 也许,它们分别叫做 create_time 和 update_time。...修改时间戳日期 / 时间格式 以下内容引用官网文档 official Laravel documentation: 默认情况下,时间戳自动格式为 ‘Y-m-d H:i:s’。...时间戳字段自动转换 Carbon 类 最后一个技巧,但更像是一个提醒,因为您应该已经知道它。...默认情况下,created_at 和 updated_at 字段被自动转换为 $dates, 所以您不需要将他们转换为 Carbon 实例,即可以使用 Carbon 的方法。
github 上有很多 SDK, 这里使用的是官方的 SDK....Checkout 在项目中安装扩展 $ composer require paypal/rest-api-sdk-php:* // 这里使用的最新版本 创建 paypal 配置文件 $ touch config...notify', 'PaymentController@payPalNotify') ->name('payment.paypal.notify'); 由于异步回调是 POST 请求,因为 Laravel...(因为我在创建计划的时候把本地订单号追加到了description属性里, 大家可以视情况而定) $description = $billingAgreement->getDescription...`不是0, 则说明是续费订单, 本地可以新建一个订单标记是续费的.
代码时间 laravel在设计上做了很巧妙的构思,将缓存相关的类,设计得有插接件的感觉。...这在使用的时候, 需要格外留意。...也为我们提供了极为便捷的助手函数 cache() 直接操作缓存。...laravel日期时间处理默认使用Carbon类库,所以缓存也用到了该库, 并且把用法发挥到极致了。 比如我们可能想动态地设置过期时间,不计算时长,能不能设置为 到某个时间点结束 ? 自然是可以的。...这样来写代码: cache()->put('key', 'value', Carbon::now()->addDay()); put方法第三个参数传入一个Carbon对象,就是默认缓存到指定的时间点。
领取专属 10元无门槛券
手把手带您无忧上云