每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,以及在数据表中插入新记录。 在开始之前,请确保在 config/database.php 中配置数据库连接。...最后度娘告诉我命令行也是支持目录的,命令改一改就好了。未来方便找up统一就放app目录下的Models目录里 php artisan make:model Models/Test ?...php namespace App\Http\Controllers; use App\Models\Test; use Illuminate\Http\Request; class TestMdlController...但是却报错了我们看到model生成的sql 莫名其妙拼接了一个 s 这里我百度了一下 artisan 生成的model 若没有特别指定,laravel系统会默认自动对应名称为「Eloquent类名称的小写复数形态...像 get 里面这一长串方法一样,我们在查询数据的时候经常会有略微复杂的查询把它们写成一个模型方法 比如说在 app/Models/Test.php 文件中写一个 getList 方法 <?
一、Migration创建数据表与Seeder数据库填充数据 数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构 1.1 创建迁移 php artisan make:...每个迁移文件的名称都包含了一个时间戳,以便让 Laravel 确认迁移的顺序。 --table 和 --create 选项可用来指定数据表的名称,或是该迁移被执行时是否将创建的新数据表。...数据表、字段、索引:https://laravel-china.org/doc... 1.3 运行迁移 运行所有未完成的迁移:php artisan migrate 1.4 回滚迁移 回滚最后一次迁移,...不过,你也可以使用 --class 选项来指定一个特定的 seeder 类: php artisan db:seed php artisan db:seed --class=UsersTableSeeder...Laravel 5.5 Nginx 配置: root /example.com/public; location / { try_files $uri $uri/ /index.php?
Laravel 后端配置 要使用 Laravel 提供的广播组件,需要在 config/app.php 中取消 BroadcastServiceProvider 前面的注释: 'providers' =...php namespace App\Events; use App\Models\User; use Illuminate\Broadcasting\Channel; use Illuminate\...= \App\Models\User::find(1); event(new UserSignedUp($user)); } 和普通事件类不同的是,广播事件无需注册对应的事件监听器定义处理逻辑...null)->pushOn( $queue, new BroadcastEvent(clone $event) ); 接下来,就是将事件消息推送到队列系统的操作了,首先获取队列名称,如果事件类定义了...最后,就是调用队列连接(根据当前配置,默认使用的是 Redis 连接,你也可以通过在事件类中设置 connection 属性指定其他队列连接)的 pushOn 方法推送封装了当前事件的 BroadcastEvent
php artisan make:model MTest 执行命令之后,我们会在 app/Models 目录下看到新创建的 MTest.php 文件,生成的代码是这样的: namespace App\...最后整理下上面的调用链条,首先,我们生成定义的 MTest 是继承自 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 这个抽象类的...然后,在这个抽象类中,使用了一个 laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php 特性,...它判断的是这个 key 是否是抽象基类 laravel/framework/src/Illuminate/Database/Eloquent/Model.php ,而不是我们定义的 MTest ,用的是一个...然后来到最后的 tap() 中,tap() 是一个 Laravel 框架中定义的全局函数,和 env() 函数在一起的,它的作用是将第一个参数当作第二个参数的参数传递给第二参数,并执行第二个参数后,将第一个参数再返回回来
在 Java、Golang 这些支持多线程/协程的应用代码中,我们可以通过开启多线程/协程的方式实现文件存储的异步处理,而在 PHP 这种不支持并发编程的单进程应用中,只能在同一个用户请求处理进程中实现文件存储...不过在 Laravel 中,我们可以基于消息队列完成文件存储的异步处理:编写一个处理文件上传的任务类,当有文件上传时,将该文件的存储操作通过任务类推送到消息队列,最后通过队列处理器进程异步处理存储和其他后续操作...所以,我们可以把 Laravel 消息队列看做 PHP 不支持并发/异步编程的一种补充实现,通过消息队列来模拟多进程和异步编程实现,对于一些非常耗时的操作,甚至还可以将其分解成多个子任务,然后通过启动多个处理器进程来提升队列消费速度...php namespace App\Jobs; use App\Models\Image; use App\Models\Post; use Illuminate\Bus\Queueable; use...如果你看过 Redis 消息队列中图片处理任务类的载荷数据,会看到 base64 编码后的图片数据非常大,完整的消息数据大小达到了 43KB 左右,而我们设计队列任务类的一个重要原则就是载荷数据越小越好
,所以需要我们自己写一个基于scout的搜索插件。...php namespace App\Helper; use MeiliSearch\Client; class MeiliSearch { protected $client;...,也是scout的扩展类: App\Services\AppSearch <?...---- 上面完成之后,你需要: 在模型Model.php中,增加use Searchable; 如: class Article extends Model { use Searchable;...//.... } 接下来需要做的就是将其绑定到 Scout 扩展中,我们可以通过在 AppServiceProvider 的 boot 方法中添加以下代码来实现: // 注册新的搜索引擎 resolve
类似地,如果你在一个匿名函数中调用__METHOD__,输出将与__FUNCTION__相同。所以它只会输出{closure}。 __CLASS__ __CLASS__魔术常量返回使用它的类的名称。...::class ::class魔术常量返回类的完全限定类名。 这是我发现自己使用最多的魔法常数,特别是在Laravel应用程序中。当您使用字符串形式的类名时,它特别有用。...例如,要在Laravel中定义一个web路由,你可以在你的routes/web.php文件中这样做: use App\Http\Controllers\UserController; Route::...类似地,当在Laravel模型中定义关系时,你可以这样做: namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate...{ return $this->hasMany(Post::class); } } 在上面的例子中,我们使用::class常量来获取Post模型类的完全限定名,这将给我们
模型类目录 由于压倒性的社区需求,现在默认的 Laravel 框架包含一个 app/Models 目录。我们希望你喜欢 Eloquent 的新家!...例如 Laravel 中的 UserFactory 是这样写的: <?...; use Illuminate\Support\Str; class UserFactory extends Factory { /** * 工厂对应模型的名称。...PHP 类,状态转换可以直接写成一个方法。...例如,你的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。
下载 debugbar 1 composer require barryvdh/laravel-debugbar --dev 修改语言时区 修改 config/app.php,将 local 的值 en...中 disks 处添加以下配置后执行php artisan storage:link来创建软链接(windows 和 linux 的软链接不一样不能直接复制!)...--model=App\Models\Article php artisan admin:make CategoryController --model=App\Models\Category php...事件允许你在一个指定模型类每次保存或更新的时候执行代码。 retrieved 事件会在从数据库中获取已存在模型时触发。当一个新模型被首次保存的时候,creating 和 created 事件会被触发。...如果一个模型已经在数据库中存在并调用 save 方法,updating/updated 事件会被触发,无论是创建还是更新,saving/saved 事件都会被触发。
即使你在数据库中添加了索引,还是不尽人意 因此需要一个更快、更快、更快的数据查询,而 Laravel 的 scout 就是专门为搜索来解决难题的 简介 Laravel Scout 为 Eloquent...php namespace App\Models; use Laravel\Scout\Searchable; use Illuminate\Database\Eloquent\Model; class...Post extends Model { use Searchable; /** * 获取模型的索引名称...php namespace App\Models; use Laravel\Scout\Searchable; use Illuminate\Database\Eloquent\Model; class...Post extends Model { use Searchable; /** * 获取模型的索引名称
前言 作为一名PHP程序员,我感到荣幸。但在时代不断的变迁中,要具备足够的知识才可生存。 那就从Go语言学起把。 希望看到本篇文章的你可以对Go有一个基本的认识。...本系列文章与我自己学习Go语言的方式去描述。以PHP代码与Go代码的对比加以区分理解。 这是转型手记的最后一章,在往下没办法再去写了,需要详细的看书去了解。...php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { /**...php namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; class UserController...语言只是工具,希望各位PHP工程师不要仅限于去使用PHP,这一年看到很多写PHP程序员未来之路一类的文章,但从未提出要去学习其他语言。 不要将自己圈在一个领域,不要做井底之蛙。
App\Models\Task::findOrFail($id); }); Laravel 提供了一个「路由模型绑定」功能来简化上述代码编写,通过路由模型绑定,我们只需要定义一个特殊约定的参数名(比如...由于路由参数({task})和方法参数(task)一样,并且我们约定了 task 类型为 \App\Models\Task,Laravel 就会判定这是一个路由模型绑定,每次访问这个路由时,应用会将传入参数值赋值给...php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Task extends Model { public...,以后每次访问包含 {task_model} 参数的路由时,路由解析器都会从请求 URL 中解析出模型 ID ,然后从对应模型类 Task 中获取相应的模型实例并传递给闭包函数或控制器方法: Route...在 Laravel 中该功能通过内置的 throttle 中间件来实现,该中间件接收两个参数,第一个是次数上限,第二个是指定时间段(单位:分钟): Route::middleware('throttle
php namespace App\Events; use App\Models\User; use Illuminate\Broadcasting\Channel; use Illuminate\...中 redis.options.prefix 里面定义的 laravel_database_ 前缀,因为 Laravel Echo 目前没有提供这个前缀设置,而 private 方法又会在频道名称前面加上...你可以参考入门套件中的 Laravel Breeze 文档快速实现用户认证功能(breeze:install 会清空 routes/web.php 中的路由,请注意备份): composer require...定义存在频道广播事件类 我们以统计当前微信群在线用户数为例进行演示,每当有新用户进入时,更新在线用户数并广播这个事件消息,为此我们需要创建一个标识用户进入微信群的广播事件类: php artisan make...php namespace App\Events; use App\Models\User; use Illuminate\Broadcasting\Channel; use Illuminate\
那么我们很清楚地就可以发现,这个 bootstrap/app.php 就是一个服务容器。话不多说,马上进入到 bootstrap/app.php 文件中。...Container 服务容器 打开 laravel/framework/src/Illuminate/Foundation/Application.php 文件,我们可以看到这个类继承的是一个叫做 Container...的类,这个单词就是容器的意思。...高大上不,如果你在 bind() 方法中,使用的是一个 \App\ContainerTest\iPhone12::class ,这样的类字符串,那么它就会通过反射来生成这个对应的对象。...resolveDependencies() 用来解决类实例化时构造函数的依赖问题,需要的参数也是通过上面反射时 getParameters() 方法获取的。
,通常是一个字符串,如果是非字符串类型,可以通过序列化操作将其转化为字符串,消费端的处理进程从队列中取出消息数据后,可以对其进行解析处理,完成业务逻辑的闭环。...这里为了简化流程,我们创建一个 Artisan 命令来模拟一个常驻内存的轮询进程作为消息处理器: php artisan make:command MockQueueWorker 并编写其实现代码如下...消息数据 Laravel 队列系统中的消息数据会以任务类形式提供,并且针对不同的驱动再做一层封装,从而方便底层进行统一处理,对于 Redis 驱动的队列系统,最终获取到的数据会通过 RedisJob 封装后返回...然后定义一个任务类作为推送到队列系统的消息数据,Laravel 提供了 make:job Artisan 命令来快速生成任务类: php artisan make:job PostViewsIncrement...任务类(消息数据)推送成功后,就可以通过 Laravel 提供的 Artisan 命令 queue:work 作为处理进程来监听并消费队列中的任务类了: php artisan queue:work
最近在Summer的《Laravel教程-Web开发实战进阶》学到很多东西,以前只会看文档,大概了解Laravel的内容而在实际运用中确不知道该怎样做,碰到一个需求不会立马联想到“这个东西可以用...实现...php namespace App\Models\Traits; use App\Models\Topic; use App\Models\Reply; use Carbon\Carbon; use...是一个命令类,存放在app/Console/Commands/在这里面键入命令相关逻辑 --command=为我们今后要调用的命令名 如 php aritsan larabbs:calculate-active-user...php namespace App\Console\Commands; use Illuminate\Console\Command; use App\Models\User; class CalculateActiveUser...(不予预显示),不过为了方便调试,你可以将其运行输出到文件中 * * * * *php artisan schedule:run >> /home/user/output.txt 我们注册调度任务 在app
尤其当分类数据和层级多时,一个糟糕的算法将使服务器不堪重负 以下用laravel实现无限级分类功能,包括: 数据表设计 填充模拟数据 生成分类树 分类树的后台维护 数据表设计 字段名 描述 id 主键id...调整模型类app/Models/Category.php代码: php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Category extends Model {...php use Illuminate\Database\Seeder; use App\Models\Category; class CategoriesSeeder extends Seeder...数据填充结果 生成分类树 分类树是一个通用的功能,适合将其封装为一个服务,创建CategoryService类
集合操作 其实这个集合操作并不是模型特有的,还记得在 查询构造器 中,我们查询列表的时候,总会在最后加一个 toArray() 吗?...比如说我们可以使用类似于 array_map() 的函数把集合中的对象全部转换成数组,还可以用一个类似于 array_column() 的函数只获取数据中的两个字段组成键值对形式的数据。...对象,而在 Model 下,走的则是 PDO::FETCH_CLASS ,也就是会和我们指定的模型类关联上,获得的结果都是一个 App\Models\MTest Object 对象。...laravel/framework/src/Illuminate/Collections/Collection.php 是集合类,里面的方法大部分都调用的是 laravel/framework/src/...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。
在生成的文章表 posts 迁移类中,编写表结构如下: <?...热门浏览文章排行榜功能实现 维护基于文章浏览数的有序集合 在 PostController 中,定义一个文章浏览方法 show: use App\Models\Post; use Illuminate\...这样一来,就可以获取到排行榜中的文章数据了。...基本思路是编写一个文章模型工厂生成测试文章,然后随机浏览文章构建基于 Redis 的排行榜有序集合,最后访问排行榜数据。...php namespace App\Console\Commands; use App\Models\Post; use Illuminate\Console\Command; use Illuminate
领取专属 10元无门槛券
手把手带您无忧上云