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

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

思考:如何提高Model层查询DB效率?如何精简代码?...如果互相喜欢,则添加双向联系人关系,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好体会laravel-upsert强大,不仅减少了代码量,也减少了sql...第二个参数是唯一标识记录。除 SQL Server 外所有数据库都要求这些具有PRIMARY或UNIQUE索引。 提供要更新列作为第三个参数(可选)。默认情况下,更新所有。...upsert()还将添加updated_at更新中。...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.8K20

跟我一起学Laravel-数据库操作和查询构造器

 查询操作 基本查询操作 使用sql语句执行select查询操作 从数据表中取得所有的数据 从表中查询单行/数据表中分块查找数据数据表中查询某一列表 聚集函数 指定select查询条件...类型查询 Ordering, Grouping, Limit, & Offset 插入操作 使用sql语句执行插入 基本插入操作 更新操作 使用sql语句执行更新操作 基本更新操作 指定增减...删除操作 使用sql执行删除 基本删除操作 悲观锁 事务处理 查看日志记录 其它操作 在Laravel中执行数据库操作有两种方式,一种是使用\DB外观对象静态方法直接执行sql查询,另外一种是使用...Model静态方法(实际上也是Facade实现,使用静态访问方式访问Model方法,内部采用了__callStatic魔术方法代理了对成员方法访问。...类型查询 MySQL 5.7和Postgres数据库中提供了新数据类型json,对json提供了原生支持,使用->可以对json进行查询。

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

    通过填充器快速填充 Laravel 测试数据

    Laravel 框架中,如果想要快速填充测试数据数据库,可以借助框架提供填充器功能,通过填充器,我们可以非常方便地为不同数据表快速填充测试数据。...填充器运行 Laravel 提供了两种方式来运行填充器:一种是独立填充命令,另一种是在运行迁移命令时通过指定标识选项在创建数据表时填充。...这样,我们就编写好了第一个填充器类,接下来,我们可以通过指定填充器类方式这条记录插入数据库: php artisan db:seed --class=UsersTableSeeder 你还可以在...通过模型工厂填充数据 以上编写填充器类填充数据数据库虽然已经很方便了,但是每次插入一条记录都要编写一条语句或者手动指定插入数据,如果需要填充测试数据有成千上万条,那不是要崩溃掉。...比如我们还是通过运行 php artisan db:seed 命令来填充数据数据库,此时,就可以看到新填充了 5 条记录: 注:本教程都以 Laravel 自带 users 及对应 User 模型类为例进行演示

    10.1K20

    Laravel API教程:如何构建和测试RESTful API

    您可以资源表示在多个数据模型中(或根本不在数据库中表示),并且模型完全不受用户限制。最后,您将以适合您应用程序方式来决定如何构建资源和模型。...Laravel通过Artisan-Laravel命令行工具提供了几个命令,可以通过生成文件并将其放在正确文件夹中来帮助我们。...Laravel带有Faker,一个伟大为我们生成正确虚拟数据格式库。...: { data: "Resource not found" } 如果您使用Laravel服务其他页面,则必须编辑代码以使用Accept header,否则常规请求中404错误也返回JSON...此设置允许我们为每个测试构建数据库,然后将其破坏,避免测试之间任何类型依赖关系。

    20.4K20

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

    而在 Yii 中使用是 Active Record 这种类型领域模型模式,在 Yii 中甚至这个组件名称就直接是 AR 。...通过前两篇文章铺垫,我们很容易就能操作 Laravel模型,但是,真正要改变是你看待这种操作数据方式。要把数据库里数据想像成是编程语言中对象,这才是 ORM 最主要内容。...在这里比较奇怪是,我们在实例化和赋值过程中没有给对象主键 id 赋值,但是在 save() 之后,id 就有值了,而且是我们新插入数据 id ,是不是很高大上。...然后来到最后 tap() 中,tap() 是一个 Laravel 框架中定义全局函数,和 env() 函数在一起,它作用是第一个参数当作第二个参数参数传递给第二参数,并执行第二个参数后,第一个参数再返回回来...在这段代码中,就是先调用 BelongsTo 对象 getResults() 方法,获得关联真正 DbSex 这个 Model 对象,然后通过回调函数中 setRelation() 绑定 laravel

    8.9K20

    Laravel5.7 Eloquent ORM快速入门详解

    简介 Laravel 内置 Eloquent ORM 提供了一个美观、简单数据库打交道 ActiveRecord 实现,每张数据表都对应一个与该表进行交互模型(Model),通过模型类,你可以对数据表进行查询...时间戳 默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据表中,如果你不想要这些 Laravel 自动管理数据,在模型类中设置 $timestamps...该属性决定日期被如何存储数据库中,以及模型被序列化为数组或 JSON 时日期格式: <?...firstOrCreate 方法先尝试通过给定/值对在数据库中查找记录,如果没有找到的话则通过给定属性创建一个新记录。...需要注意是,通过 firstOrNew 方法返回模型实例并没有持久化数据库中,你还需要调用 save 方法手动持久化: // 通过属性获取航班, 如果不存在则创建...

    15.1K41

    泛微OA地址外发自定义接口、MySQL操作、Laravel入门

    前言 泛微OA使用Laravel 这是其对接数据文档 https://laravelacademy.org/post/22012 位置 项目位置 D:\e-office_server_11.0\...运行一个通用语句 有些数据库语句不返回任何值,比如新增表,修改表,删除表等,对于这种类型操作,可以使用 DB 门面的 statement 方法: DB::statement('drop table users...' => 0] ); 你甚至可以一次性通过传入多个数组来插入多条记录,每个数组代表要插入数据记录: DB::table('users')->insert([ ['email' => 'taylor...更新(Update) 当然,除了插入记录到数据库,查询构建器还可以通过使用 update 方法更新已有记录。...该方法接收两个参数:用于查询记录条件数组和用于更新值对数组。 updateOrInsert 方法首先会尝试使用第一个参数值对匹配对应数据库记录,如果记录存在,则通过第二个参数来更新它。

    1.9K30

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

    分享给大家供大家参考,具体如下: 1、连接数据laravel连接数据配置文件位于config/database.php中,在其中connection字段中包含laravel所支持数据配置信息...,laravel目录最外层有.env文件,在其中配置对应默认值 DB_HOST=数据库服务器地址 DB_PORT=数据库端口 DB_DATABASE=数据库名 DB_USERNAME=用户名...' = 1]); 3、通过查询构建器操作数据Laravel常用数据库操作封装为接口函数提供给用户调用,从而使数据库操作更为便捷,这些接口就是查询构建器(query builder)。...(Object Relational Mapping)简称,是一种实现面向对象编程语言里不同类型系统数据之间转换技术,即将数据库中数据按照对象形式进行组织,可以便于面向对象程序进行数据库操作...Laravel内置Eloquent ORM提供了一种便捷方式帮助你组织数据数据,每张数据表都对应一个与该表进行交互模型(Model),通过Model类,你可以对数据表进行查询、插入、更新、删除等操作

    13.4K51

    laravel5.6框架操作数据curd写法(查询构建器)实例分析

    本文实例讲述了laravel5.6框架操作数据curd写法(查询构建器)。分享给大家供大家参考,具体如下: laravel5.6 数据库操作-查询构建器 <?...select('id','name', 'email')- get(); //value() 方法从结果中获取单个值,该方法会直接返回指定值: $data = DB::table('users')...() 方法排序 $data = DB::table('users') - orderBy('id', 'desc') - get(); //insert() 方法插入记录到数据表 //insertGetId...操作数据ORM 更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程...》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

    2.2K30

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

    学习主题 该demo主要涉及如下几个知识点: 创建数据库并迁移数据表 创建表单,学习Laravelblade模板引擎 创建名为Link模型Model 保存数据进入数据库 从数据库中获得...*自带Form类,但laravel5.*已经移除了,可以通过composerComposer官网安装。...通过composer安装也很简单,就是在项目根目录下composer.json文件'require'数组中添加"laravelcollective/html": "5.2....在项目根目录执行Artisan命令php artisan make:model Link后,生成app/Link.php文件,这个model通过配置用来管理MySQL中links数据表,在Link这个...这里注意下:如果不写table变量,laravel会自动根据model名字复数来找数据表,如这个model名字是link,那就找links表。

    24.1K31

    ERROR 1055 (42000): Expression #1 of SELECT list is not in

    通过修改配置文件my.cnf来解决这个问题。...默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入值为0,而该又是自增长,那么这个选项就有用了。...STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入一个事务表中,则中断当前操作,对非事务表不做限制 NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零 NO_ZERO_DATE...:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。...不设置此值时,用默认存储引擎替代,并抛出一个异常 PIPES_AS_CONCAT: ”||”视为字符串连接操作符而非或运算符,这和Oracle数据库是一样,也和字符串拼接函数Concat相类似

    1.4K40

    最为常用Laravel操作(1)-Eloquent模型

    $user->roles()->attach($roleId); // 插入数据和附加数组中间表 $user->roles()->attach($roleId, ['expires' => $expires...例如, 你可能想要使用 Laravel 加密器对存储在数据库中数据进行加密, 并且在 Eloquent 模型中访问时自动进行解密....除了自定义访问器和修改器, Eloquent 还可以自动转换日期字段为 Carbon 实例甚至 文本转换为 JSON ....你可以自定义哪些字段被自动调整修改, 甚至可以通过重写模型中 $dates 属性完全禁止调整: class User extends Model { /** * 应该被调整为日期属性...如果数据库有一个 JSON 或 TEXT 字段类型包含了序列化 JSON, 可使用 array 转换, 将自动进行 序列化 和 反序列化 . class User extends Model {

    32100

    ERROR 1055 (42000): Expression #1 of SELECT list is not in

    Laravel配置文件,config/database.php,查找mysql配置, 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST...默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入值为0,而该又是自增长,那么这个选项就有用了。...STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入一个事务表中,则中断当前操作,对非事务表不做限制 NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零 NO_ZERO_DATE...:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。...不设置此值时,用默认存储引擎替代,并抛出一个异常 PIPES_AS_CONCAT: ”||”视为字符串连接操作符而非或运算符,这和Oracle数据库是一样,也和字符串拼接函数Concat相类似

    1.1K20

    ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate

    Laravel配置文件,config/database.php,查找mysql配置, 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST...默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入值为0,而该又是自增长,那么这个选项就有用了。...STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入一个事务表中,则中断当前操作,对非事务表不做限制 NO_ZERO_IN_DATE: 在严格模式下,不允许日期和月份为零 NO_ZERO_DATE...: 设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。...不设置此值时,用默认存储引擎替代,并抛出一个异常 PIPES_AS_CONCAT: ”||”视为字符串连接操作符而非或运算符,这和Oracle数据库是一样,也和字符串拼接函数Concat相类似

    1.1K30

    PHP-Laravel(DB类操作数据库)

    四、DB类操作数据库(重点) 按照MVC 架构,对数据操作应该放在 Model 中完成,但如果不使用Model,我们也可以用 laravel框架提供 DB 类操作数据库。...而且,对于某些极其复杂sql,用Model 已经很难完成,需要开发者自己手写sql语句,使用 DB 类去执行原生sql。...laravelDB基本用法DB::table(‘tableName’) 获取操作tableName表实例(对象)。...2、增加信息(insert) 对数据库中某个表增加数据主要有两个函数可以实现,分别是insert()和insertGetId() insert(数组)可以同时添加一条或多条,返回值是布尔类型。...语法:DB::table(‘表名’) -> insert(); 连贯操作/链式操作 案例:分别使用两个函数往数据表中插入几条记录 ?

    3.8K20
    领券