首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    laravel框架操作sql时使用Scope作用域

    应用场景 某些SQL语句需要加某些共同的条件,例如status > 0,如果我们每条SQL语句都加的话显然是很麻烦的,作为一个优雅的框架,当然有相应的解决办法 编写作用域 Laravel 应用默认并没有为作用域预定义文件夹...,所以你可以按照自己的喜好在 app 目录下创建 Scopes目录并实现接口(Illuminate\Database\Eloquent\Scope)的方法apply。...* * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\...$builder){ $builder->where('status','>', 1); }); } } 有些查询并不想使用作用域,可以通过调用以下方法移除作用域...); } } 调用时不需要加scope前缀,类似于修改器/访问器,并且可以一次性调用多个方法。

    1.3K10

    【Laravel系列4.5】主从库配置和语法生成

    找到 laravel/framework/src/Illuminate/Database/Connection.php 中的 select() 方法,可以看到它还有第三个参数。...在执行 update() 操作时,我们最后进入了 laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php 这个对象中。...SQL 语句,会交给连接,也就是 laravel/framework/src/Illuminate/Database/Connection.php 中的 insert() 方法来执行。...这个就是我们最早学习使用过的那个原生查询所调用的方法。接下来,我们再看一下 get() 方法,也就是获得查询结果集的方法。...在 Builder 中,get() 方法会调用一个 runSelect() 方法,这个方法里面会再调用一个 toSql() 方法,就是获得原始查询语句的方法。

    5.1K20

    Laravel 5.3之 Query Builder 源码解析(中)

    ,是在后续执行SQL语句时调用Connection::select()执行的,之前的Laravel版本是没有封装在闭包里而是先执行了连接操作,Laravel5.3是封装在了闭包里等着执行SQL语句再连接操作...={$database}"; } 通过构造函数知道最重要的一个方法是createConnection($dsn, $config, $options),该方法实例化了一个PDO,这里就明白了Query...public function query() { return new \Illuminate\Database\Query\Builder( $this...,是在后续执行SQL语句时调用Connection::select()执行的,之前的Laravel版本是没有封装在闭包里而是先执行了连接操作,Laravel5.3是封装在了闭包里等着执行SQL语句再连接操作...public function query() { return new \Illuminate\Database\Query\Builder( $this

    4K31

    orm 系列 之 Eloquent演化历程2

    数据库管理相关的代码都放在Schema目录下, 最开始的结构如下: src/Illuminate/Database/Schema ├── Blueprint.php └── Builder.php 就两个文件...grammar的compileCommand函数,此处我们调用的是compileCreate函数,至此我们就分析完了数据库表操作的方法,下面我们来看migrations功能。...:是前一篇讲的对于Active Record模式中Model的功能,包括了Model、Builder和Relation功能,忘记的可以去看前一篇orm 系列 之 Eloquent演化历程1的内容 Query...首先是morphMany的构造函数: public function __construct(Builder $query, Model $parent, $morphName) { $this...*版本的时候,laravel/framework还采用的psr-0规范,所有其目录层级还是src/Illuminate/Database,在这个版本中有个新的目录Capsule,其下面是一个Manager

    3.5K30

    【Laravel系列4.4】模型Eloquent ORM的使用(二)

    laravel/framework/src/Illuminate/Collections/Collection.php 是集合类,里面的方法大部分都调用的是 laravel/framework/src/...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。...不过这里需要注意的是,模型默认生成的 QueryBuilder 是 llaravel/framework/src/Illuminate/Database/Eloquent/Builder.php 对象,...而不是我们之前 查询构造器 中的 laravel/framework/src/Illuminate/Database/Query/Builder.php 对象。...但 Eloquent\Builder 的内部持有的一个query 属性依然是 Query\Builder 对象,也就是说在底层,它依然是调用的我们熟悉的那个 查询构造器 来进行工作的。

    4.8K20

    3分钟短文:Laravel模型作用域,为你“节省”更多代码

    在模型文件 Event 内头部引入下述类: use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder...所以,本地作用域 应运而生,专门用于某个模型文件的方法,手动调用的时候就起作用,不调用就不会主动追加。...而声明一个本地作用域,只要遵循laravel的语法规定即可,如下示例: public function scopePublished($query) { return $query->where('published...调用的时候要手动追加上: $events = Event::published()->get(); 其中 published()方法就是映射到 scopePublished 方法。...既然本地作用域返回的是 QueryBuilder 实例,那么自然就可以链式调用本地作用域的方法,和 QueryBuilder 的方法。

    1.8K22

    Laravel 6.11 版本发布,优化了 Redis 多频道广播逻辑

    Laravel 官方开发组本周发布了 Laravel 6.11.0 版本,新版本在 Eloquent 模型查询时新增 firstWhere 方法,优化了基于 Redis 的多频道广播,以及一些现有版本的问题修复...1、新增功能 Eloquent firstWhere() 方法 Eloquent 模型现在支持调用 firstWhere 方法,它的功效和 where()->first() 一样,算是一个语法糖: /...优化 Redis 多频道广播 在 Laravel 应用中,一次发送事件到多个频道很常见,目前,我们的做法是通过多个发布命令发送完全一样的负载数据到指定 Redis 服务器,这将导致不必要的数据传输,从而带来通信及性能损耗...新增特性 新增 Illuminate\Database\Eloquent\Builder::firstWhere() 方法 Redis 支持一次广播数据到多个频道 问题修复 修复 WithFaker:...:makeFaker() 中的未定义属性 修复 Str::afterLast() 方法 修复 PHP 7.3 插入浮点类型到 MySQL 数据库问题 修复通过自定义中间表属性名刷新模型问题 代码调整 在

    2K10
    领券