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

Laravel系列4.2】查询构造器

使用 查询构造器 也是通过一个 DB 门面,但是,在这里我们需要通过 table() 方法指定一个名。之后的操作就全都是针对这个指定的名了。接下来,我们就可以通过链式调用的方式进行数据库的操作。...我们又发现了一个设计模式在 Laravel 框架中的应用,意外不意外,惊喜不惊喜! 连查询 普通的连查询的使用还是非常简单的,我也就不多说了,下面的代码中也有演示。...一般的连查询我们只需要一个外键相对应即可,但是在我的实际业务开发中,还会有遇到多个键相对应的情况,这个才是我们接下来说的重点问题。...() 的话,它也会创建一个默认的 connection() 对象,就是我们上篇文章中演示的连接不同数据的效果。...然后这个 connection() 会通过上篇文章讲过的工厂方法创建一个 MySqlConnector 对象,它会继续创建 laravel/framework/src/Illuminate/Database

16.8K10

通过 Laravel 查询构建器实现简单的增删改查操作

通过前面几篇教程的预热,我们已经连接上数据库,创建好了数据,填充好了数据,接下来,就是在 Laravel 应用中实现对数据库的增删改查了。...DB 门面提供的方法执行原生的 SQL 语句,DB 门面既可以用于构建查询构建器方法链,也可以用于原生语句的执行。...原生 Statement 语句 我们可以通过 DB 门面提供的 statement 方法执行原生的 SQL Statement 语句,比如创建、删除、修改数据操作: DB::statement('drop...DB 门面提供了一个 select 语句帮助我们对数据进行查询: $users = DB::select('select * from `users`'); 该方法返回包含所有查询结果的 stdClass...查询构建器也是基于 DB 门面的,只不过需要调用其提供的 table 方法构建一个基于指定数据查询构建器。

4.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel代码简洁之道和性能优化

经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...如果互相喜欢,则添加双向联系人关系,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好的体会laravel-upsert的强大,不仅减少了代码量,也减少了sql...该查询将为每个帖子和日期创建一个新记录或增加现有的查看计数器: DB :: table ( 'stats' )-> upsert ( [ [ 'post_id' => 1 , '...Lumen 如果您使用 Lumen,则必须手动实例化查询构建器: $builder = new \Staudenmeir\LaravelUpsert\Query\Builder(app('db')->connection...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库的时间是int类型,不是laravel默认的时间格式,并且我们插入时间和更新时间也不是laravel默认的字段

5.7K20

【译】20个 Laravel Eloquent 小技巧(下)

但是查询的返回都是一个 Collection 对象Laravel 为集合提供了很多方便的操作方法,sortBy 就是其中一个,当然还可以用 filter 等集合操作) 12....查询对象一个封装,所以可以用在 DB 上的原始查询方法,都可以用在继承自 Eloquent 的 model 对象上。)...用于大集合的 Chunk()方法 不完全与Eloquent相关,它更多是Collection 集合类提供的方法,但仍然很强大 —— 处理更大的数据集,你可以将它们分成几块。...php artisan make:model Company -mcr -m 将会创建模型的迁移(migration)文件 -c 将会创建控制器(contriller) -r 将用这个控制器应该是一个资源控制器...在保存的时候重写 update_at 字段 你知道 - > save()方法是可以接受参数的? 因此,我们可以告诉它“忽略” updated_at默认填充当前时间戳的功能。

2.8K10

laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

' = 1]); 3、通过查询构建器操作数据库 Laravel将常用的数据库操作封装为接口函数提供给用户调用,从而使数据库操作更为便捷,这些接口就是查询构建器(query builder)。...:table('student')- skip(1)- limit(2)- get(); 3.5、聚合函数 laravel查询构建器还提供了聚合函数用于操作查询的结果集,包括count(计数)、sum(...Laravel内置的Eloquent ORM提供了一种便捷的方式帮助你组织数据库数据,每张数据都对应一个与该进行交互的模型(Model),通过Model类,你可以对数据进行查询插入、更新、删除等操作...4.1、创建Model 在app文件夹下新建model文件,每个数据库都需要对应一个model,例如创建一个Student模板类: namespace App; use Illuminate\Database...Eloquent默认会管理数据创建时间、更新时间,对应数据中的created_at、updated_at字段,你需要在创建时包含这两个字段。

13.3K51

laravel框架模型和数据库基础操作实例详解

分享给大家供大家参考,具体如下: laravel分为三大数据库操作(DB facade[原始查找],查询构造器[Query Builder],Eloquent ORM): use Illuminate\...,[5]); 2.查询构造器[Query Builder] laravel查询构造器提供了方便流畅的接口,用来建立及执行数据库查找语法。...ORM 是一个ActiveRecord实现,用于数据库操作。...每个数据都有一个与之对应的模型,用于数据交互。 建立模型,在app目录下建立一个Student模型,即Student.php,不需要带任何后缀。 <?...相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

2.8K20

Laravel的基本数据库操作部分

,array("1")); 获取到一个数组,数组中的每一个结果是一个StdClass对象 <?...使用DB::table(),得到查询构造器对象,参数:名 调用Builder对象的get()方法,得到数组数据 例如:$users=DB::table("article")->get(); 查询构造器是链式调用的...,还有其他方法,可以去查看文档 [laravel] 数据库的迁移 使用Artisan命令创建迁移,make:migration 名称 –create 名 例如:php artisan make:migration...create_users_table --create=users 此命令会在database/migrations目录下面创建一个迁移文件 打开生成的迁移文件,在up方法里面进行字段的创建,这里会用到数据库的结构构造器...Schema 运行迁移命令,使用命令 php artisan migrate,会在数据库中自动创建 ?

1.4K30

Laravel系列4.3】模型Eloquent ORM的使用(一)

创建一个模型 创建模型我们可以手动,也可以通过命令行,既然是学习框架,那么我们还是通过命令行来创建一个模型类吧。使用的依然是之前的,不过还是改下名字吧,这回名就叫做 m_test 。...然后,我们就通过命令行创建这个对应的 模型 类。...不不不,非常简单,我们给 Model 类设置一个变量用于指定名就可以了。...对于 Laravel 中标准的 Eloquent 模型类来说,每个都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据的创建时间和修改时间...就是我们上面这条 SQL 语句的查询条件。它就是去查询 db_sex 表里面的数据,然后把获得的结果对象返回回来。至于这个 ?

8.8K20

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

然后顺着我贴出的代码,可以一路看到就是如果有read 配置,那么就会先使用 write 配置创建一个主连接,接着调用这个主连接的 setReadPdo() 方法并根据 read 配置又创建一个从数据库连接...主对象我们的 write 连接对象,而 read 连接对象是它的一个对象。...但是 查询构造器 以及上层的 Eloquent ORM 都是之前讲过的面向对象式的链式生成对象之后完成数据库查询的,这其中,肯定有 SQL 语句的生成过程,这就是我们接下来要学习的内容。...其实我们查询构造器 那篇文章中就已经看到过 Laravel 是如何生成 SQL 语句了,还记得我们分析的那个 update() 方法?...在 Builder 中,get() 方法会调用一个 runSelect() 方法,这个方法里面会再调用一个 toSql() 方法,就是获得原始查询语句的方法。

4.3K20

Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()

Laravel 5.5 Linux mint 18 PHPStorm 最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小项目,其中有个需求是分组查询数据库中的一个字段并返回每个分组中的数量...raw('count(*) as total')) - groupBy('browser') - get(); 再去查手册 ## 指定一个 Select 子句# 当然,你并不会总是想从数据中选出所有的字段...这时可使用 select 方法自定义一个 select 子句来查询指定的字段: $users = DB::table('users')- select('name', 'email as user_email...要创建一个原始表达式,可以使用 DB::raw 方法: $users = DB::table('users') - select(DB::raw('count(*) as user_count...对象,而此处却要一个字符串,所以改回了 $sql = DB::raw('count(*) as value'); 此时$sql是个string,至于有木有办法在此处用Model,慢慢研究吧,任重道远!

4.2K51

Laravel系列4.6】

PDO 属性设置 来填坑了,在【Laravel系列4.2:查询构造器】https://mp.weixin.qq.com/s/vUImsLTpEtELgdCTWI6k2A中,我们说过一个问题,那就是查询构造器查询出来的结果都是...之前我们已经说过,查询构造器 最终调用的结果还是使用的 原生查询 的这几个方法,所以我们从这个 select() 方法入手。...event() 是注册一个事件,传递进去的是一个 StatmentPrepared 对象,这个对象有两个构造参数,一个是连接对象本身,一个我们生成的 PDOSatement 对象。...事件,就是要有一个注册,然后在另外一个地方监听,当注册的对象内容发生变化的时候,可以通过监听这边的方法来对事件内容进行处理。关于 Laravel 事件的内容,我们将在后面的文章中进行详细的学习。...还记得,在 Model 中查询返回的结果,每条数据都会直接是这个 Model 对象,而不是 stdClass ,这一点,就真的和 JavaBean 是完全相同的概念了。

1.3K30

Laravel学习记录--Model

* 将范围应用于给定的 Eloquent 查询生成器 * * @param \Illuminate\Database\Eloquent\Builder $builder...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]的好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我的另一个博客 - - - Laravel...这得借助于中间,通过前面的学习我们可能会有这样的疑惑,不是多对多才借助中间?。。。。不急下面通过一个例子你就理解了 ,这里得补充一句,虽然借助了中间,但本质上还是一对多关联。...true则查询关联对象本身 通过原生sql语句我们可以更好的理解 当最后一个参数为false时 SQL: select `tags`.*, `media_tags`....null,Eloquent允许我们为这种空对象定义一个默认的类型,这个对象类型在定义关联时指定,通过withDefault()方法(这个方法好像在前面提到过) withDefault()如果不指定值默认返回

13.5K20

Android小程序实现音乐播放列表

本文实例为大家分享了Android实现音乐播放列表的具体代码,供大家参考,具体内容如下 (1)创建一个数据类工具类DBHelper,该类继承SQLiteOpenHelper,重写onCreate()和onUpgrade...public void onCreate(SQLiteDatabase db){ //获取SQLiteDatabase对象 this.db = db; //创建 String CREATE_TBL...int newVersion) { } } (2)创建添加音乐的AddActivity,添加界面提供两个文本框和一个按钮,用于输入音乐名和歌手名,当单击“添加”按钮时,将数据插入中,具体代码如下:...arg0, View arg1, int arg2, long arg3){ final long temp = arg3; builder.setMessage("真的要删除该记录?...(); ad.show(); } }); helpter.close(); } } 上述代码中调用DBHelper的query()方法查询数据库并返回一个Cursor游标,然后使用

1.3K41

Laravel5.7 Eloquent ORM快速入门详解

简介 Laravel 内置的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据都对应一个与该进行交互的模型(Model),通过模型类,你可以对数据进行查询...定义模型 我们创建一个 Eloquent 模型开始,模型类通常位于 app 目录下,你也可以将其放在其他可以被 composer.json 文件自动加载到的地方。.../更新模型 插入 想要在数据库中插入新的记录,只需创建一个新的模型实例,设置模型的属性,然后调用 save 方法: <?...Laravel Schema 构建器包含一个辅助函数来创建该数据列: Schema::table('flights', function ($table) { $table- softDeletes(...$builder, Model $model) { return $builder- where('age', ' ', 200); } } Laravel 应用默认并没有为作用域预定义文件夹

15K41

Laravel5.2之Demo1——URL生成和存储

学习主题 该demo主要涉及如下几个知识点: 创建数据库并迁移数据 创建表单,学习Laravel的blade模板引擎 创建名为Link的模型Model 保存数据进入数据库 从数据库中获得...曾经遇到一个场景:需要给数据test增加一个字段age但又要保留test表里数据,可以再创建一个迁移文件php artisan make:migration create_links_table --...不过有时也推荐使用它的Query Builder查询构造器,实际上就是SQL语句封装的类,性能会比较高一些,个人遇到过一个场景:使用Eloquent ORM性能有点慢,导致PHP执行过长报503 Time...laravel框架使用也仅此而已,没有那么复杂,对于我们这样的刚刚入门,了解这个流程就可以玩一玩了!!!...hash字段 根据提供数据在数据表里插入一个记录record 返回该链接给用户(1).使用Query Builder的where()方法,并传入Input::get('link')参数验证数据表里是否已经有该链接

24.1K31

laravel 模型Eloquent ORM 查询

up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大的 模型 Model 介绍 Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord...每个数据库都有一个对应的「模型」用来与该交互。你可以通过模型查询数据中的数据,以及在数据插入新记录。 在开始之前,请确保在 config/database.php 中配置数据库连接。...使用的是单数形式帕斯卡命名法 ,也就是首字母大写的驼峰命名法 比如 up之前创建的 test Model 命名就是 Test.php 但是呢, laravel 都能 用命令创建控制器生成跟数据填充了...和使用了 DB 取出来的数据一样的是都是一个 Collection 集合,不一样的是 DB 取出来的是数组,Model 取出来的是一个类,需要一层一层的剥开点到 attributes 我们才能看到数据...像 get 里面这一长串方法一样,我们查询数据的时候经常会有略微复杂的查询把它们写成一个模型方法 比如说在 app/Models/Test.php 文件中写一个 getList 方法 <?

4.4K10

Laravel5.2之Seeder填充数据小技巧

而且,Category与Post是一对多关系One-Many:一个分类下有很多Post,一个Post只能归属于一个Category;Post与Comment是一对多关系One-Many:一篇博客Post...设计字段 按照上文提到的Category、Post、Comment和Tag之间的关系创建迁移Migration和模型Model,在项目根目录输入: php artisan make:model Category...Tag是多对多关系,还需要一张存放两者关系的: //多对多关系,中间的命名laravel默认按照两张表字母排序来的,写成tag_post会找不到中间 php artisan make:migration...10个,Post插入了5个。...可以用DB::table()->insert()批量插入,拷贝ModelFactory.php中表的字段定义放入每一个对应Seeder,当然可以有些字段为便利也适当修改对应假数据。

3.5K42
领券