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

Laravel Eloquent 模型关联关系(下)

今天我们将在定义好模型关联的基础上进行关联查询、插入和更新操作,看看如何借助模型关联提高代码的可读性并提高编码效率。...>orderBy('created_at', 'desc'); }]); 关联插入与更新 一对多关联记录插入 新增关联模型的时候,可以在父模型上调用相应方法直接插入记录到数据库,这样做的好处是不需要指定关联模型与父模型的外键关联字段...->paragraph, 'user_id' => mt_rand(1, 15)] ]); 更新一对多所属模型外键字段 如果是要更新新创建的模型实例所属模型(父模型)的外键字段,比如以 posts 表为例...Tag(['name' => $faker->unique()->word]), new Tag(['name' => $faker->unique()->word]) ]); // 如果插入多条记录需要传递中间表额外字段...对于那些已存在的标签记录,我们可以通过更高效的方法与文章进行关联关系的绑定和解除,这个方法就是 sync,调用该方法时只需传入刚创建/更新后文章的标签对应 ID ,至于哪些之前不存在的关联需要绑定,哪些存在的关联需要解除

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

3分钟短文:Laravel模型创建数据条目的2个语法糖

[img] 本期我们开始讲模型中,如何插入新条目,或者更新既有条目。...代码时间 我们在构建一个hello world页面的时候,已经介绍了如何使用laravel的命令行脚手架创建新的模型文件,以及通过迁移功能创建数据库表。这样就把数据操作衔接起来了。...我们在表中还有id字段,created_at字段,updated_at字段,并没有显式赋值。但是你打开数据库表查看结果的时候,发现那些也成功的写入了。...原有如下: id字段是 auto_increment 约束,自动递增; created_at / updated_at 字段,在Event模型内使用了 $timestamp = true。...新建 or 更新 接着介绍laravel模型的几个语法糖。一个常规的场景,比如在写入数据时,先判断数据库表内是否有该条记录,如果没有就创建如何有则返回。

1.9K00

使用Laravel中的查询构造器实现增删改查功能

引言 上一篇介绍了如何在windows环境下跑一个 laravel 项目,这一篇写如何使用 laravel 中的 查询构造器 实现增删改查。...我们能看到这两条数据不知道创建的用户是谁, 但是有uid, 这时候我们希望一个接口既返回商品信息又能够让我知道创建者是谁, 此时就需要用到多表联查了, 我们新增一个路由: Route::get('test...insert 方法接收数组形式的字段名和字段进行插入操作 DB::table('user')- insert( ['real_name' = $real_name, 'nickname' =...接受包含要更新的字段的数组 - where('id', $id)- - update(['nickname' = $nickname]); 删除 我们新增一个 delete 请求的路由 test/...laravel中查询构造器可以使用 delete 方法表中删除记录。

4.7K30

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

思考:如何提高Model层查询DB的效率?如何精简代码?...如果互相喜欢,则添加双向联系人关系,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好的体会laravel-upsert的强大,不仅减少了代码量,也减少了sql...该查询将为每个帖子和日期创建一个新记录或增加现有的查看计数器: DB :: table ( 'stats' )-> upsert ( [ [ 'post_id' => 1 , '...', ['active']); User::insertIgnore(['username' => 'foo']); 如果模型使用时间戳,upsert()并且insertIgnore()会自动为插入添加时间戳...默认的时间格式,并且我们的插入时间和更新时间也不是laravel默认的字段,我们需要做如下定义: //时间戳类型 public $timestamps = true; //重写插入和修改时间的字段

5.7K20

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

对于 Laravel 中标准的 Eloquent 模型类来说,每个表都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据的创建时间和修改时间...其实所有的表最好都有这两个字段,而且很多后台管理系统中还需要有 创建人 和 修改人 的记录。它们的目的都是为了数据的安全和记录可追溯。...在这里比较奇怪的是,我们在实例化和赋值的过程中没有给对象的主键 id 赋值,但是在 save() 之后,id 就有值了,而且是我们新插入的数据 id ,是不是很高大上。...这个参数是可选的,如果不填,它会默认找一个叫做 sex_id,当然,在我们的数据中是没这个字段的,所以我们指定为 sex 。...别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法的。

8.8K20

laravel-nestedset:多级无限分类正确姿势

laravel-nestedset是一个关系型数据库遍历树的larvel4-5的插件包 目录: Nested Sets Model简介 安装要求 安装 开始使用 迁移文件 插入节点 获取节点 删除节点...嵌套集合模型 安装要求 PHP>=5.4 laravel>=4.1 v4.3版本以后支持Laravel-5.5 v4版本支持Laravel-5.2、5.3、5.4 v3版本支持Laravel-5.1 v2...它可以为一个新创建的node或者是数据库中取出的node 插入节点(node) 每次插入或者移动一个节点都要执行好几条数据库操作,所有强烈推荐使用transaction. 注意!...duplicates -- lft 或者 rgt 重复的节点的数量 wrong_parent -- left 和 rgt 与parent_id 不对应的造成无效parent_id 的节点的数量...missing_parent -- 含有parent_id对应的父节点不存在的节点的数量 修复树 v3.1往后支持修复树,通过parent_id字段的继承信息,给每个node设置合适的lft 和 rgt

3.4K20

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

, [1, 'Dayle']); 不返回: DB::statement('drop table users'); 返回自增id: $id = DB::table('users')- insertGetId...['vip_ID'= 5,'vip_name'= 'wyp','vip_type'= "出行",'vip_fenshu'= 800]); echo $id; //插入多条数据 $bool=DB::...); //指定vip_ID为下标 dd($student); $student=DB::table("vipinfo")- lists('vip_name'); //不指定下标,默认下标0开始 /...新增数据、自定义时间戳、批量赋值 (1)使用save方法新增 laravel会默认维护created_at,updated_at 两个字段,这两个字段都是存储时间戳,整型11位的,因此使用时需要在数据库添加这两个字段...相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

2.8K20

php之laravel项目中使用腾讯云短信

如何申请模板: 签名添加成功后,选择 短信正文->创建正文模板。...模板创建成果后,会有模板信息列表:模板ID、类型、申请时间、模板名称、内容 如何laravel中配置sdk ①腾讯云短信包在Github中的下载地址:https://github.com/qcloudsms...:1表示当前正在应用的 表名: sms_send 应用表字段类型默认说明idint(11) merch_idint(11) 商户ID :0代表平台sms_typeInt(11) 短信类型user_idInt...(11) 状态:1表示当前正在应用的create_way int(11) 创建方式:0手动 1控制台picVarchar(32) 签名需要的验证截图 表名: sms_template 模板表字段类型默认说明...表名: sms_verify验证码表字段类型默认说明idint(11) merch_idint(11) 商户ID :0代表平台sms_send_idInt(11) 短信发送详情记录IDverfiy_codeVarchar

3.5K00

30分钟用Laravel实现一个博客

50条模拟数据 $user = User::find(1); //插入完后,找到 id 为 1 的用户 $user->name = "najiuyuanzou"; //设置 用户名...') }} => 我的博客 //注意这里有一个 config('app.name') 该函数其实是读取的 /.env 里的 APP_NAME ,且默认为 'Laravel' ,也就是说,你改 APP_NAME...也可以改这里显示的,不过我嫌麻烦,直接查找替换了。...$request->post() 数据即可 $blog = Blog::create($request->post()); //改方法的返回是新插入的数据生成的对象 // redirect...一旦表单提交的数据不符合 Request@rules Laravel会自动帮我们生成一个叫 $errors 的数组,它存放着所有的错误信息, 我们在视图上通过判断它是否有 content 字段来判断是否是表单提交的评论有问题

7.3K00

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

','name','3','测试')- first(); //select() 方法可以查询指定自定义字段 $data = DB::table('users')- select('id','name',...'email')- get(); //value() 方法结果中获取单个,该方法会直接返回指定列的: $data = DB::table('users')- where('name','测试')...- get(); //whereBetween() 方法验证列是否在给定之间 $data = DB::table('users') - whereBetween('id', [1, 3])- get...() 方法插入记录并返回自增ID $data=DB::table('users')- insert( [ 'name'= '测试', 'email' = 'ceshi.com', 'password...操作数据ORM 更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程

2.2K30

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

(1)创建数据库和测试表 create table member( id int primary key auto_increment, name varchar(32) not null...①Update方法表示可以修改整个记录中的全部字段; ②Increment和decrement表示修改数字字段的数值(递增或者递减),典型的应用:记录登录次数、积分的增加; 案例:把id=1的名称,改名为...Where参数顺序: -> where(字段名,运算符,字段)。例如id=1,则可以写成:where(‘id’,’=’,1),简写成 Where(‘id’,1);【只有=号可以简写。】...案例:把id=1的用户年龄字段加10;【了解】 DB::table(’ member’)->increment(‘age’); 每次+1 DB::table(’ member’)->increment...(2)取出单行数据 DB::table('member')->where('id','1')->first();//返回是一个对象 等价于limit 1 (3)获取某个具体的(一个字段) DB::table

3.7K20

Laravel 通过迁移文件定义数据表结构

在对数据库进行操作之前,需要先创建数据表,在诸如 Laravel 这种现代框架中,通过代码驱动让数据表结构的定义变得非常简单。...创建字段 接下来,我们看一下如何创建的数据表添加字段,前面我们已经说了,这个操作在 Schema::ceate 方法的第二个参数的闭包函数中完成: Schema::create('users', function...Blueprint 类为我们提供了丰富的数据表字段定义方法,通过这些方法我们完成所有与数据表字段相关的操作,包括新增字段、删除字段、修改字段、添加索引和外键等等。...100 的字符串,该字段插入到 name 字段后面,允许为空,注释信息是用户昵称。...修改表字段,接下来我们要讨论如何对表字段设置索引和外键。

2.1K21

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

分享给大家供大家参考,具体如下: 1、连接数据库 laravel连接数据库的配置文件位于config/database.php中,在其中connection字段中包含laravel所支持的数据库的配置信息...方法可以添加数据库查询条件,where()接收三个参数:字段名、操作符、,操作符如果是’=’可以省略,例如查询id =1003的数据: $res=DB::table('student')- where...Laravel内置的Eloquent ORM提供了一种便捷的方式帮助你组织数据库数据,每张数据表都对应一个与该表进行交互的模型(Model),通过Model类,你可以对数据表进行查询、插入、更新、删除等操作...Eloquent默认会管理数据表的创建时间、更新时间,对应数据表中的created_at、updated_at字段,你需要在创建表时包含这两个字段。...更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及

13.3K51

两个非常棒的 Laravel 权限管理包推荐

有很多为这个部分而写的包,随着 Laravel 历史的发展官方也提供了相关的支持。那么今天这块市场的情况如何?有什么包是最好用的么?这里我有两个推荐。 为什么需要包?...说明: 字段 guard_name 具有默认 web — 允许你使用多个 guard; 正如你看到的,有两个权限 中间表 — 角色和用户; 字段 model_type 具有默认 App\User ,...所以没有直接外键关联到 users 表,也没有其他表有 user_id 字段。...因此,与 user_id 或者 users 表没有直接关联,这跟 Spatie 的包一样; 还有一些不同于前者的字段:abilities.title,abilities.only_owned 和 roles.level...@role 和 @hasanyrole 支持多个 guard Bouncer’s 的优点: 更优雅的创建角色和权限 基于模型或实例的权限控制 更好的缓存机制 更强大的数据库结构和一些更有用的字段 如果以上任何一个细节对你来说非常重要

4.1K30

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

通过前面几篇教程的预热,我们已经连接上数据库,创建好了数据表,填充好了数据,接下来,就是在 Laravel 应用中实现对数据库的增删改查了。...原生 Statement 语句 我们可以通过 DB 门面提供的 statement 方法执行原生的 SQL Statement 语句,比如创建、删除、修改数据表操作: DB::statement('drop...,要指定查询的字段,可以通过 select 方法来实现: $user = DB::table('users')->select('id', 'name', 'email')->where('name',...更新记录 更新数据库记录通过 update 方法来完成,我们可以在该方法中传入待修改字段及对应修改数组: $id = 11; $affectedRows = DB::table('users')->where...如果是数值字段的更新的话,Laravel 还为我们提供了 increment 和 decrement 方法用于快速进行数值增减,默认步长是 1,当然你可以通过第二个参数指定步长: DB::table(

4.1K20

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

学习主题 该demo主要涉及如下几个知识点: 创建数据库并迁移数据表 创建表单,学习Laravel的blade模板引擎 创建名为Link的模型Model 保存数据进入数据库 数据库中获得...如果不需要laravel自动创建的时间可以写上public timestamps = false;再执行迁移命令,links数据表里就没有'created_at'/'updated_at'字段了。...hash字段 根据提供数据在数据表里插入一个记录record 返回该链接给用户(1).使用Query Builder的where()方法,并传入Input::get('link')参数验证数据表里是否已经有该链接...else{ $newHash = Hash::make(Input::get('link'));//根据输入的link做hash哈希就行或者别的更简短的输入 } (4).向link数据表里插入一个新的记录...6、数据库中取出URL并且重定向 最后根据生成的URL获取其hash部分,根据hashlinks数据表取出对应的URL为了重定向,这里英文原文也是在路由中写逻辑,这里也在路由里写逻辑: Route

24.1K31
领券