代码比较简单,知识将 request 的 input 内容复制给 Company 模型的属性,然后调用 save 方法将数据存入。 那么,如果想要获取存入后数据条目的ID,如何返回呢?...其实,save 方法本身就是链式调用的,会返回当前的 Company 模型对象。...直接调用属性值即可: $data->id; 封装到 Response 响应体内: return Response::json(array('success' => true, 'last_insert_id...' => $data->id), 200); 上面的写法自然是对的,返回的是当前写入的条目的ID。...但是,如果是并发的系统,或者在流程处理中,没有使用 Company 模型进行数据操作,而是 DB::statement,DB::insert 这些,获取到的,可就不是最后的ID了。
先来看简单的增删改。 使用 insertGetId() 我们可以插入一条数据并返回这条数据的主键 ID ,这个相信会是大家最常用的。当然,也有 insert() 方法,它返回的是成功失败。...最后,我们还有一个获取单个数据的方法 find() ,它和 delete() 很类似,只需要一个主键 ID 就可以了。...批量插入 前面有提到过,我们可以使用 insert() 进行批量的插入,这里也直接给演示一下,其实没什么特别的东西。...不过需要注意的是,insert() 返回的是布尔值,表示成功失败,所以在批量插入的时候想要得到所有的插入 ID 就需要用别的方法了。...(比如记录插入前最后一条的 ID 值然后再查询一次大于这个 ID 的所有数据的 ID 值) Route::get('db/test/batch/insert', function () { $data
通过前面几篇教程的预热,我们已经连接上数据库,创建好了数据表,填充好了数据,接下来,就是在 Laravel 应用中实现对数据库的增删改查了。...原生插入语句 想要在数据库中插入一条记录,通过 DB 门面提供的 insert 语句即可: $name = str_random(10); $email = str_random(10) . '@163...使用查询构建器进行增删改查 接下来,我们开始介绍 Laravel 数据库功能的核心组件 —— 查询构建器(说是核心,是因为 Eloquent 模型的底层也是基于这个查询构建器),日常开发中,我们与数据库的交互基本都是直接或间接通过它来完成的...插入记录 要通过查询构建器插入一条记录,也很简单,通过 insert 方法即可: $flag = DB::table('users')->insert([ 'name' => str_random...(10), 'email' => str_random(8) . '@163.com', 'password' => bcrypt('secret') ]); 如果想要在插入之后获取对应记录的主键
四、DB类操作数据库(重点) 按照MVC 的架构,对数据的操作应该放在 Model 中完成,但如果不使用Model,我们也可以用 laravel框架提供的 DB 类操作数据库。...laravel 中 DB 类的基本用法DB::table(‘tableName’) 获取操作tableName表的实例(对象)。...使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。...语法:DB::table(‘表名’) -> insert(); 连贯操作/链式操作 案例:分别使用两个函数往数据表中插入几条记录 ?...①Update方法表示可以修改整个记录中的全部字段; ②Increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积分的增加; 案例:把id=1的名称,改名为
这就是 Laravel 自带的一个填充器示例文件,该填充器类提供了一个 run 方法,当我们运行填充命令时,就会调用该方法执行数据库填充。...现在,我们先抛开测试不谈,赶紧来看下如何在 Laravel 中定义模型工厂。...在模型工厂文件中,我们通过 factory->define 方法来定义 User 模型的模型工厂,该方法的第一个参数是模型类,第二个参数是一个匿名函数,在该匿名函数中我们通过 Faker 类库提供的方法来定义字段规则...,Faker 类库提供了丰富的字段规则帮助我们生成伪造字段值,这些规则可以在官方文档中查看,这里,我们使用 调用模型工厂 在调用这些模型工厂的时候,需要借助 Laravel 提供的全局辅助函数 factory...,最后再调用 create 方法让变更生效。
引言 我们推荐使用laravel的eloquent orm 模型操作数据库表, 因为特性更为丰富,组装更为灵活,在编程层面操作数据的来来去去非常直观。..., [1]); 或者使用链式操作,获取所有满足条件的记录: $users = DB::table('users')->get(); 当然了,还有经常用到的多表联合查询,复杂的查询过滤条件: DB::table...先说查询语句, 如果在数据库优化上做的比较好的一些SQL固定写法,可以使用原生方法固化下来。...type' => $userType]); 插入新数据,其实与上述的带有占位符参数绑定的SQL查询语句类似,只是SQL语法不同而已: DB::insert('insert into contacts (..., [1]); 写在最后 本文通过对laravel DB门面的增删改查用法,向大家展示了基本的参数绑定的用法。
laravel 这是clean architecture的第十篇,也是具体案例的第二篇,本篇会通过使用laravel框架,来开发我们的应用。...我们啊来建立我们的数据库sqlite3 database/database.sqlite,建表,插入数据。...总结 The Clean Architecture in PHP读书笔记写到这全部结束了,在这最后一篇中,我们以laravel为框架给出了示例,最核心的领域逻辑是纯的php class,不依赖于任何的框架...但是在使用laravel过程中,特别是repository这块,由于没有直接使用laravel的Eloquent模块,实现上确实比较麻烦,在实现CleanPhp\Invoicer\Persistence...\Eloquent\Repository下的类的时候,很多方法都比较tricky,而且可以想象的是,随着项目负责度的提升,这一块会成为程序员的梦靥,所以下一个系列我会去带领大家看看php中几大主流orm
一、Laravel核心目录文件介绍 app:程序的核心代码和业务逻辑代码,其中的Http目录是我们业务逻辑的存放点 bootstrap:包含框架启动的和自动加载文件 config:包含所有程序中的配置文件...'/demo/{id}',[‘uses’=>控制器名称@控制器下的方法]) 2.3 视图 - 使用模板 直接在控制器里面调用view然后return返回即可 return view(路径/模板,...实现CURD(原生SQL语句操作数据库 ) 3.1.1 插入数据 (返回bool 插入是否成功) $result = DB::insert('insert into student(name,age)...DB::table("表名")->select("id","name")->get(); 结果分块:如果你需要操作数千条数据库记录,可以考虑使用 chunk 方法。...4.2 基础语法与include的使用 模板中输出php变量 {{ $name }} 模板中执行php代码 {{ date('Y-m-D H:i:s', time()) }} 模板中强制输出 @{{
Ordering, Grouping, Limit, & Offset 插入操作 使用sql语句执行插入 基本插入操作 更新操作 使用sql语句执行更新操作 基本更新操作 指定列的增减 删除操作...使用sql执行删除 基本删除操作 悲观锁 事务处理 查看日志记录 其它操作 在Laravel中执行数据库操作有两种方式,一种是使用\DB外观对象的静态方法直接执行sql查询,另外一种是使用Model类的静态方法...$user->name; 如果只需要一列的值,则可以使用value方法直接获取单列的值 $email = DB::table('users')->where('name', 'John')->value...语句执行插入 插入操作与select操作类似,使用insert函数 DB::insert('insert into users (id, name) values (?...'dayle@example.com', 'votes' => 0] ]); 如果希望插入后能够获取新增数据的id,则可以使用insertGetId方法 $id = DB::table('users'
从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 中如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...在代码中,我们通过 DB 这个门面类的 insert() 方法,就可以实现原生语句的增加操作。对于路由来说,其实我们不用写完全限定命名空间的类名,直接写个 DB 也是可以的。...注意,insert() 方法返回的结果是一个布尔值,也就是添加操作的成功失败情况,如果我们想获取新增加的数据的 id ,需要使用 DB::getPdo()->lastInsertId(); 这条语句才可以获取到...'=>$id]); echo '删除成功'; }); 嗯,你猜对了,我们的执行成功了,使用 insert() 方法,但是里面的语句是一条 delete 语句,是可以执行成功的。...在 laravel/framework/src/Illuminate/Database/Connection.php 文件中,我们可以找到 insert() 、update()、delete() 这些方法
经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...如果互相喜欢,则添加双向联系人关系,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好的体会laravel-upsert的强大,不仅减少了代码量,也减少了sql...:优化前5条sql,优化后2条sql laravel-upsert 扩展的特性 安装 composer require staudenmeir/laravel-upsert:"^1.0" 用法 插入和更新...( ' active' ); $ table ->时间戳(); }); 使用upsert()插入一个新的用户或更新现有的一个。...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库的时间是int类型,不是laravel默认的时间格式,并且我们的插入时间和更新时间也不是laravel默认的字段
说明:本文主要聊一聊Laravel测试数据填充器Seeder的小技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...,在控制器里输入方法时会自动补全auto complete字段属性的方法: 2、mpociot/laravel-test-factory-helper 输入指令php artisan test-factory-helper...Laravel官方推荐使用模型工厂自动生成测试数据,推荐这么写的: //先输入指令生成database/seeds/CategoryTableSeeder.php文件: php artisan make...可以用DB::table()->insert()批量插入,拷贝ModelFactory.php中表的字段定义放入每一个表对应Seeder,当然可以有些字段为便利也适当修改对应假数据。...分享下最近发现的一张好图和一篇极赞的文章: 文章链接:Laravel的中大型專案架構
先来看看插入功能,也就是最上面的代码中的功能。...在这里比较奇怪的是,我们在实例化和赋值的过程中没有给对象的主键 id 赋值,但是在 save() 之后,id 就有值了,而且是我们新插入的数据 id ,是不是很高大上。...在这个类中,你会发现有不少魔术方法的使用,比如 __get() 这个方法。...最后的最后,来到 getRelationshipFromMethod() 方法中。...gender() 方法获得返回的结果,也就是获取上面的 BelongsTo() 对象。
dd($res); } 反向关联 与上述方法基本一致,上述方法我们通过学生id获取其选修的课程,现在通过课程id查询选修的学生 在Mclass模型中定义一个stus方法,这个方法还是调用belongsToMany...当获取模型记录时,你可能需要根据不存在的关联对结果进行限制,如获取没有电话号码的用户记录,为了实现这个功能你可以使用doesntHave,并传递关联方法 如 public function show...,并且电话id = 1; } 关联数据计数 如果你只想统计结果数并不需要加载数据,那么可以使用withCount方法,此方法会在你的结果集模型中添加一个{关联名_count}字段 如查询每个用户的号码数量...,如你需要为一个Muser模型插入一个新的Phone,这时你无须为Phone手动设置musers属性,直接在关联上使用save方法插入Phone即可 如: 为用户id为2的插入电话号码 public...在调用save方法向Phone模型插入值 这里Eloquent自动在phones表中添加了uid字段,并插入正确的值 使用saveMany添加多个值 $user = \App\Muser::find
有两个比较好的方法可以提高数据库测试性能: 对大量的tests按照功能分组。...只恢复每个test case污染的表,而不需要把所有的数据表重新恢复,否则表数量越多测试代码执行越慢。 这里聊下方法2的具体做法。...假设程序有50张表,每次运行测试时首先需要为每组构建好独立的对应数据库,然后创建数据表,最后就是填充测试数据(fixtures)。...fixtures可用yml格式定义,既直观也方便维护,如: #simple.yml accounts: - id: 1 person_id: 2 type: investment...以后写数据库测试性能会提高很多,大量的test case可以在短时间内运行完毕。 最后,写测试代码是必须的,好处非常多,随着项目程序越来越大,就会深深感觉到写测试是必须的,一劳永逸,值得花时间投资。
今天开始讲如何在 Laravel 中操作数据库,Laravel 为我们提供了多种工具实现对数据库的增删改查,在我们使用 Laravel 提供的这些数据库工具之前,首先要连接到数据库。...->get(); DB::connection('mysql_old')->table('users')->insert(...); 如果你使用的 Eloquent 模型类,可以在对应模型类中设置 $...针对读写分离数据库的连接,Laravel 数据库底层会自动判断,如果是查询语句会使用读连接,如果是数据库插入、更新、删除等操作会使用写连接。...然后我们通过 Tinker 插入一条记录(插入属于写操作,自动使用写连接): 然后你会在写数据库中看到这条记录,读数据库中没有,接下来,我们运行一条查询语句(查询属于读操作,自动使用读连接): 此时,由于我们并没有配置读写数据库之间的数据同步...,所以只能查出来我们在上一篇教程中在读数据库中插入的记录。
我们会简单介绍 PHPUnit 「单元测试」和「功能测试」的基本使用方法。继而,讲解如何在 Laravel 项目中创建「单元测试」和「功能测试」用例。...这就是应该如何创建「功能测试」用例的秘密。接下来我们将创建具体的测试用例,来讲解如何在 Laravel 中使用「单元测试」和「功能测试」。...在 index 方法中,我们通过请求中的 id 参数,从 Post 模型中查询一篇文章。...最后,通过 assertEquals 方法比较两个变量是否相等。 以上就是如何在 Laravel 中使用单元测试的使用方法。...测试中的断言会以标准的 PHPUnit 输出显示在控制台。 总结 今天,我们探讨了 Laravel 内置测试组件 PHPUnit 的测试用例实现方法。
准备工作 确保你了解 php面向对象编程 的基础知识, 会html和简单的js, 在css方面:我们使用laravel内置的 bootstrap4, 最后,一定要会使用 composer。...---- 使用模型工厂 Factory 来插入虚构的数据 在日常的开发中,我们需要很多模拟的数据进行测试,模型工厂的作用就是帮我们快速的,随机的生成这些数据。...最后通过它们3个的配合,使用命令刷新了整个数据库并且分别向3张表插入了很多模拟的数据,便于我们开发。 也许你到这里会觉得这还不如你写sql语句。...我们其实需要设置很多路由,来对应生成的 BlogController 下的各种方法,Laravel已经帮我们想到了所以它给我们提供了这样一种方法配置路由,编辑 /routes/web.php ,在最后面添加这么一句...然后通过文章->评论+s;的方法直接获取了属于某篇文章的所有评论。 我们学会了创建请求Request,并且在它的内部配置验证规则,在控制器层中通过依赖注入的形式验证数据。
自增索引值是在数据库插入新记录时自动生成的唯一标识,对于一些需要获取插入记录的标识值的场景非常重要。本章将详细介绍如何在Mybatis中实现返回Insert操作的自增索引值,并给出示例和实践指导。...但是,对于Insert操作而言,我们通常需要获取新插入记录的自增索引值,以便于后续的操作和处理。在本章中,我们将深入探讨如何在Mybatis中实现返回Insert操作的自增索引值。...userMapper.insertUser(user)方法来插入新记录,并通过user.getId()方法获取新插入记录的自增索引值。...userMapper.insertUser(user)方法来插入新记录,并通过user.getId()方法获取新插入记录的自增索引值。...userMapper.insertUser(user)方法来插入新记录,并通过user.getId()方法获取新插入记录的自增索引值。
MongoDB实用场景 产品用户访问日志,点击埋点统计信息 业务系统环境参数配置信息 业务系统运行时日志,如laravel.log,nginx.log 使用Homebrew在macoOS安装MongoDB...中使用MongoDB 使用Composer创建一个Laravel项目 composer create-project --prefer-dist laravel/laravel laravel-mongodb-exploer...注意只有viewers中存在collection时, 上面结果才会显示viewers use viewers; 使用数据库后,需要创建colleciton db.ad_clicks.insert({"ip...DB中查询MongoDB 使用了Laravel-MongoDB扩展,可以基于Eloquent与Query Builder操作MySQL一样的数据php artisan thinker/ / 查询ad_clicks...,希望对大家的学习有所帮助,也希望大家多多支持。
领取专属 10元无门槛券
手把手带您无忧上云