首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel源码解析之Database

在我们学习和使用一个开发框架时,无论使用什么框架,如何连接数据库、对数据库进行增删改查都是学习的重点,在Laravel中我们可以通过两种方式与数据库进行交互: DB, DB是与PHP底层的 PDO直接进行交互的...上面说的这两个部分都包括在了 Illuminate/Database包里面,除了作为Laravel的数据库层 Illuminate/Database还是一个PHP数据库工具集, 在任何项目里你都可以通过...Database服务注册和初始化 Database也是作为一种服务注册到服务容器里提供给Laravel应用使用的,它的服务提供器是 Illuminate\Database\DatabaseServiceProvider...mysql,这里假定是常用的mysql连接 return $this->app['config']['database.default']; } 如果没有指定连接名称,Laravel会使用database...如果设置了读写分离,那么就会调用 createReadWriteConnection 函数,生成具有读、写两个功能的 connection;否则的话,就会调用 createSingleConnection

1.3K30

推荐超好用的 6 款 Laravel Admin 管理模版

图片 Laravel Admin 管理后台模板的不同类型 在搜索引擎中粗略搜索,你会得到大概 20多种 Laravel Admin 模板的选项,尽管它们表面上看起来很相似,但实际上在用途和架构存在着很大差异...图片 主要特征 在 Nova 中向模型添加 CRUD 操作的机制被称为资源,这些是您可以在命令行上创建的类似控制器的类,例如要创建一个 Post 资源:php artisan nova:resource...Post,一个新类会显示在您项目的 app/Nova 目录中,不仅如此,它还会自动显示在 Nova 模板中供您使用。...通常大多数 Laravel 模型在 Nova 中工作无需任何额外的配置,但您可以定义具体的细节,如字段如何被编辑等。 此外,Nova 另一个值得关注的特点是允许您在一个或多个模型上执行自定义任务。...Orchid 最吸引人的是它的开源社区,在没有任何付费项目的情况下能够维护好其完善的功能。

7.7K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云

    / Laravel 官方在 2018 年发布了官方后台管理系统 Nova,它是由 Laravel 框架的开发者 Taylor Otwell 一手完成。...Nova 前端采用 Vue + Vue Route ,国内 Vue 用顺手的开发者来说 Nove 更加灵活。 Nova 没有免费试用版,小项目 99 刀授权,大项目 199 刀授权。...虽然它在性能优化上无法和官方的 Nova admin 所匹敌,但毕竟是开源项目,国内使用者众多,也有自己的开发者生态。...Voyager 内置一个媒体管理器,允许使用者在 UI 层面查看、编辑、删除文件,不论是在本地,还是放在其他云上都可以轻松操作。Voyager 还有个菜单构建器,直接在页面上就可以完成菜单管理。...Voyager 的文档写的非常清晰,并且没有视频教程。

    10.1K02

    在 Laravel 项目中编写第一个 Vue 组件

    ,关于如何快速入门 Vue.js 框架,作者在知乎上也有建议的学习路线:https://zhuanlan.zhihu.com/p/23134551,可以说是很贴心了,大家遵循这个路线,相信很快可以入门...既然已经有这么丰富的资源,关于 Vue.js 的介绍和使用,我这里就不赘述了,我们重点来介绍如何在 Laravel 中通过 Vue 组件构建前端页面和功能。...、可读性和可维护性,下面我们以 Laravel 默认的欢迎页面为例,将其改为通过 Vue 组件来实现,希望可以帮助你快速入门如何在 Laravel 中编写 Vue 组件。...这样,我们就将之前默认实现的欢迎页面改写为了通过 Vue 组件构建的页面,在项目根目录下运行 npm run dev 重新编译前端资源(如果之前没有运行过 npm install 的话,需要先运行这个命令...好了,我们已经完成了在 Laravel 中编写第一个 Vue 组件,很简单吧,有了 Vue 组件,以后前端开发和维护会更加高效,想要在 Laravel 中结合 Vue 构建更加复杂的前后端分离应用,可以阅读学院提供的

    3.3K30

    在 Laravel 项目中使用 webpack-encore

    安装依赖 首先当然是安装依赖 yarn add -D @symfony/webpack-encore 需要注意的是,webpack-encore 没有像 laravel-mix 那样在自己内部依赖 vue-tempplate-compiler...Laravel 自带了一个 mix() 函数用于引用 mix 编译的资源,与之类似,syfony 也有这样的函数,而且更为方便。...encore_entry_script_tags 引用编译的前端资源 在模板里使用前面添加的 helper 函数引用资源,你会发现它比 Laravel 自带的 mix() 函数更方便,只需要一个函数,就可以自动引入...去 github 上提 issue,维护成员基本上都很友善耐心,几个小时就会有回复。这种态度也让我对它更加放心了,相信它会折腾得越来越好。...相比于 laravel-mi,encore 的 API 以及一些默认配置方面考虑得更为科学和全面,想要配置 vue-loader 或者 ts-loader 之类的,只需要调用相应的方法。

    2.1K20

    深入浅出 Laravel 的 Facade 外观系统

    关于「外观模式」可以阅读 设计模式 Java 版 - 外观模式 Laravel 外观组件 Laravel 中的「外观」组件实际上是服务容器中底层类的「静态代理」,它将 Laravel 内核中定义的「Contracts...(在 Laravel 中又 称为服务、契约或者通常我们所说的接口)」,以静态可调用的方式封装到各个「外观」服务中供我们使用。...外观组件配置 所有内置的外观组件的配置数据,同 Laravel 其它服务一样被定义在 config/app.php 文件中。...$args); } } 你会发现这个 Facade 基类并没有定义类似 make 的方法,那么这里能够静态调用 App::make() 看来是需要从 __callStatic 着手才行。...获取一个偏移位置的值,实际上从容器中解析出服务。

    2.5K20

    Laravel学习笔记之bootstrap源码解析

    说明:Laravel在把Request通过管道Pipeline送入中间件Middleware和路由Router之前,还做了程序的启动Bootstrap工作,本文主要学习相关源码,看看Laravel启动程序做了哪些具体工作...开发环境:Laravel5.3 + PHP7 + OS X 10.11 在Laravel学习笔记之Middleware源码解析聊过,Kernel中的sendRequestThroughRouter()处理...()来往laravel.log里打印log值,当然在应用程序中经常\Log::info(),\Log::warning(),\Log::debug()来打印变量值,即Writer类中定义的的方法。...注册Facades 在路由文件中经常会出现Route::get()这样的写法,但实际上并没有Route类,Route只是\Illuminate\Support\Facades\Route::class外观类的别名...所以Route::get()的调用过程就是,首先发现没有Route类,就去自动加载函数堆栈中通过AliasLoader::load()函数查找到Route是IlluminateSupportFacadesRoute

    3.9K00

    【Laravel系列6.4】管道过滤器

    而说起管道,其实大家也不会太陌生,在程序开发的世界中,管道模式的应用随处可见,同样在 Laravel 框架中,它也是核心一般的存在。...= null): mixed 它的作用是将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。...我们一步步的来看。 参数不用多说了吧,stack 是上一次的返回值,pipe 是当前我们要处理的值,也就是当前的中间件对象。在这个回调函数中又调用了一层回调函数,并将这两个值通过 use 传递进去。...上面的代码我们是嵌套了两层的回调函数,通过之间的学习,我们知道回调函数是有延迟加载的特性的,也就说,这一堆代码是在我们最终调用这个回调函数的时候才会触发的,那么它是在什么时候调用的呢?...另外两个就是增加符号和时间戳。在 AddTime 的处理中,我们使用的是 后置 中间件的功能,也就是在中间件完成处理后再添加内容。这个在中间件相关的课程中我们也已经讲过了。

    4.1K20

    第五届世界智能大会

    这道题关键就是绕过正则匹配,来执行后面的eval函数 解题思路 利用通配符调用Linux系统命令来查看flag 在Linux系统中可以使用 ?...linux中|管道符的作用 | 管道符的作用是 把 管道符左边的的输出 当做右边命令后面待处理的结果 例如: ls -lha ~ | more| grep a >haha.txt 在源码中我们可以发现有个...,_construct()和_toSring(),但是_construct()这个函数是用到了pkshow这个库,前面说了这个库没有用,所以重点就是_tostring这个库,通过这个函数可以进到ace函数里面...类后,将docker的值反序列化后等于acp docker的值反序列化后赋值给openstrack,也就是让openstrack等于acp,所以需要让acp类中的neutron和nova的值相等...,_construct()和_destruct(),在__destruct方法中,使用成员变量a作为参数b作为变量函数名执行代码,在代码最后接收GET参数并进行反序列化。

    86830

    Laravel源码笔记(一)程序结构与生命周期

    在laravel中,服务容器以完全限定命名空间名称或用户自定义的别名(aliase)作为索引,将该类已有实例或实例的构造器存放到自身定义的instances和bingdings两个数组属性中。...我们先来看下类定义: [Kernel类结构] 可以看到他的构造函数依赖于app和router两个对象,然鹅在public/index.php文件中我们只是调用$app->make(Illuminate\...设置好了,真正的打包和调用是在then()中进行的。...只要每个中间件都提供handle()这个接口并按同样的规则返回下一个闭包next的调用,那我们便可以在不修改原有类的基础上动态的添加或减少处理功能而使框架的可扩展性大大增加。...)把业务接口函数放置在了反转数组顶部,这样在生成的函数栈调用次序就能与middlewares数组中定义时一致。

    2.5K31

    【Laravel系列4.1】连接数据库与原生查询

    从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 中如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...在这个 mysql 的配置中,我们会发现很多 env() 函数调用的信息。这个函数是用于读取 .env 文件中所写的配置信息的。...它有两个参数,一个是指定的配置文件中的键名,一个是如果没有找到的话,就会给一个默认值。关于这个函数,还记得我们在之前就已经讲过了。...不过在这里为了突显出我们是调用了这个门面类,所以才写了这个完全限定名字称的类名。 看这个 insert() 函数的参数写法,是不是和 PDO 的预处理语句的写法很像?...,我们在修改和删除操作中,绑定数据使用的是 :xxx 这种方式哦!

    3.2K50

    Redis 分布式锁在 Laravel 任务调度底层实现中的应用

    Laravel 任务调度的基本设置 在 Laravel 项目中,我们可以基于任务调度功能非常轻松地管理 Crontab 定时任务,只需在 App\Console\Kernel 的 schedule 方法中定义所有需要调度的任务...:run,并且将标准输出和错误都重定向到空设备文件(即丢掉的意思,如果你想将输出记录下来,可以将 /dev/null 调整为对应的日志文件路径,或者你还可以为每个 Laravel 调度任务设置单独的日志输出...而诸如 hourly、daily、weekly 之类用于表示任务调度的时间间隔方法则定义在 Event 类中引入的 ManagesFrequencies Trait 中,这里面定义了所有 Laravel...,则不会运行这个调度任务,这里我们没有设置,可以忽略),返回到调用 isDue 方法的上一层代码,dueEvents 方法最终返回所有当前已到期、可以执行的、通过 Event/CallbackEvent...可以看到,在 Laravel 底层,其实是通过面向对象的 PHP 代码对 Cron 条目 Shell 命令进行了封装,以便通过更加灵活的方式来管理和维护调度任务的运行。

    6.2K21

    通过 Laravel 创建一个 Vue 单页面应用(三)

    如果你还没有读过通过 Laravel 构建 Vue 单页应用的 第一部分 和 第二部分,我建议你先去看看,再回到这里。我会在这里等你。...如果你是 Laravel 的新手,你可以查阅在 数据库入门 上的大量文档。...回调传递两个参数:一个错误和来自API调用的响应。 我们的 getUsers() 方法接受一个 page 变量,该变量最终作为查询字符串参数出现在请求中。...它实际上是这样的: { params: { page: 1 } } 下面是我们的 beforeRouteEnter 守卫如何使用 getUsers 函数获取异步数据,然后在组件上调用...当下一页或上一页在第一页和最后一页的边界处为空时,将禁用这些按钮。 代码中可能有一些冗余,但是此组件说明 vue-router了在进入路由之前用于获取数据的方法!

    5.2K10

    基于 Redis 在 Laravel 中实现消息队列及底层源码探究

    在 PHP 中,可以使用原生的数组函数或者 SplQueue 类很轻松地实现队列这种数据结构,不过这里我们介绍的是 Redis,所以还可以借助 Redis 自带的列表类型来实现。...process 方法会调用 RedisJob 上定义的 fire 方法执行对应的任务逻辑(更底层调用的是 Redis 封装任务类上的处理方法): public function process($connectionName...,任务类也没有设置 queue 属性,则调用 queue->push( 实际上,直接通过 Queue::push(new PostViewsIncrement($post)) 也可以推送任务类到 Redis...,则通过处理器类运行,否则调用这个任务类本身提供的 handle 或者 __invoke 方法执行,这里也就是我们在 PostViewsIncrement 上定义的 handle 方法: public...:队列系统和异步处理 Laravel 框架都已经提供了,在日常开发时,我们只需要按照消息任务类的结构编写 handle 处理方法,然后在适当的地方通过 dispatch 方法进行分发即可,剩下的交给 Laravel

    6.4K30

    【Laravel系列6.5】门面模式

    Laravel 中的门面 虽然实现可能不太一样,但在 Laravel 中的门面总体上还是遵循着门面模式的基本思想的。...在 Facade 类中,别的方法函数我们先不用看,直接拉到最底下,你会发现一个魔术方法,__callStatic() 。...$args); } __callStatic() 的意思是通过静态调用时如果没有定义对应的方法,就进入到 __callStatic() 方法中,比如我们调用的 Cache::get() 这个方法,实际上当前的...,就是调用了另外两个方法,注意 getFacadeAccessor() 是我们的各个门面子类中实现的,比如例子中就是在 Cache 这个类中实现的。...在这里我们就不讲契约方面的内容了,其实本质上就是服务容器和门面要解决的依赖控制的问题。 至此,我们也就完成了 Laravel 核心内容的学习。

    1.8K10

    【Rust日报】2024-03-21 ​Rust 1.77.0 版本发布

    新特性和改进 C-string 字面量: Rust 现在支持 C-string 字面量(例如 c"abc"),它们会扩展为内存中以 null 字节终止的字符串,类型为 &'static CStr。...这对于编写与需要 null 终止字符串的外语接口互操作的代码非常方便,所有相关的错误检查(例如,内部 null 字节的缺失)都会在编译时进行。...; 支持异步函数递归: 在 1.77 版本中,异步函数现在可以递归调用自己,只要使用某种形式的间接方式来避免函数状态的无限大小。...(StructName, field); 在非调试配置中默认启用 strip: 没有启用调试信息(例如,debug = 0)的 Cargo 配置现在默认会启用 strip = "debuginfo"。...该提案计划在 Rust 1.80 版本中实现稳定化,预计在 2024 年 6 月进入 Beta 阶段,7 月正式稳定。

    47210

    从消息队列看OpenStack

    nova数据库中),但是执行虚拟机启动操作时却没有任何效果,观察nova-compute服务日志找不到任何相关的记录,同时虚拟机卡在启动状态中。...名称为openstack,可以通过cinder.conf进行修改;但对于nova和neutron这两个项目,则都是在代码中写死的)。...图中最左边部分画出了集群中部分nova服务进程,此处这些nova服务进程的作用是作为生产者向rabbitmq发送消息;中间灰色线框部分是rabbitmq;最右边部分也是集群中的nova服务进程,它们和左边的生产者实际上是相同的进程...)将获取到消息,并调用相应的函数执行虚拟机开机操作。...=instance) replay exchange 在前面虚拟机启动相关的rpc调用函数中提到cctxt.cast方法是用于异步rpc调用的,即不会等待被调用方执行完成。

    1.1K40

    从消息队列看OpenStack

    nova数据库中),但是执行虚拟机启动操作时却没有任何效果,观察nova-compute服务日志找不到任何相关的记录,同时虚拟机卡在启动状态中。...进行修改;但对于nova和neutron这两个项目,则都是在代码中写死的)。...图中最左边部分画出了集群中部分nova服务进程,此处这些nova服务进程的作用是作为生产者向rabbitmq发送消息;中间灰色线框部分是rabbitmq;最右边部分也是集群中的nova服务进程,它们和左边的生产者实际上是相同的进程...)将获取到消息,并调用相应的函数执行虚拟机开机操作。...在前面虚拟机启动相关的rpc调用函数中提到cctxt.cast方法是用于异步rpc调用的,即不会等待被调用方执行完成。

    1.9K20
    领券