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

Mysql通过关联update将一张一个字段更新到另外一张

做什么事情 更新book_borrow,设置其中student_name为studentname,关联条件为book_borrow.student_id = student_id student... book_borrow 几种不同更新方式 保留原数据更新 只会更新student中有的数据,student查不到数据,在book_borrow还保持不变,不会更新,相当于内连接...更新结果以student查询结果为准,student没有查到记录会全部被更新为null 相当于外连接 update book_borrow br set student_name = (select...update book_borrow br left join student st on br.student_id = st.id set br.student_name = st.name;   将一张查询结果插入到另外一张...insert select :将一条select语句结果插入到 -- insert into 名1 (列名) select (列名) from 名2 ; insert into tableA

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

使用Entrust扩展包在laravel 实现RBAC功能

namespace App; use Zizaco\Entrust\EntrustRole; class Role extends EntrustRole { } Role模型拥有三个主要属性: name —— 角色唯一名称...和description 属性都是可选,在数据库相应字段默认为空。...:在User模型添加roles() 、hasRole(name) 、can(permission) 以及ability(roles,permissions, 软删除 使用Entrust提供迁移命令生成关联关系默认使用了...如果你由于某种原因不能在数据库中使用级联删除,那么可以在EntrustRole 、EntrustPermission 类以及HasRole trait提供事件监听器手动删除关联记录。...总结 到此这篇关于使用Entrust扩展包在laravel 实现RBAC功能文章就介绍到这了,更多相关Entrust扩展包实现RBAC内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

6.1K10

LaravelModel层做数据缓存实现

使用模型唯一缓存键,您可以缓存模型(或关联模型)更新时自动更新(以及缓存失效)模型上属性和关联,一个好处是访问缓存数据比在控制器缓存数据更具可复用性,因为它在模型上而不是在单个控制器方法。...不过在新增或删除一个评论时,我们怎么触发修改文章updated_at字段呢? 碰巧 Eloquent 模型中有一个属性就叫$touches 。下面是我们评论模型大概样子: <?...':comments_count', 15, function () { return $this- comments- count(); }); } 我们使用唯一键cacheKey()...我设置了一个定时器,以便在每隔 15 分钟缓存刷新间隔里,缓存可在该时间多数范围内有最高命中率。 cacheKey()方法要用到模型唯一键值,并且在模型更新时对应缓存失效。.../1-1515650910 这个键值是由名、模型id值及当前updated_at timestamp 值组成。

1.2K31

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

如果互相喜欢,则添加双向联系人关系,插入之前校验是否存在,存在则更新type等字段,不存在则插入双向数据 我们通过这个场景能非常好体会laravel-upsert强大,不仅减少了代码量,也减少了sql...第二个参数是唯一标识记录列。除 SQL Server 外所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新列作为第三个参数(可选)。默认情况下,将更新所有列。...upsert()还将添加updated_at到更新。...当然了还是有一些注意点和坑,下面分享一下 注意问题 要根据需求添加唯一索引 根据官方文档说明,我们model必须添加这行代码,才能以Eloquent方式用 use \Staudenmeir\...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.7K20

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

这两个包都已经假设你已经有一个默认 Laravel 用户数据库,但没有任何角色和权限结构。 它们会添加自己字段。 这两个包都在 README 上有非常清晰文档来描述各自用法。...说明: 字段 guard_name 具有默认值 web — 允许你使用多个 guard; 正如你看到,有两个权限 中间角色和用户; 字段 model_type 具有默认值 App\User ,...所以没有直接外键关联到 users ,也没有其他有 user_id 字段。...然后,permissions 是附加到 entity 一组功能; Entity (在所有)是分配权限对象。它可能是角色或用户。...他们添加了一些附加功能,但在 README 文件并没有很好解释; Spatie 有 guard 字段但是 Bouncer 没有。

4.1K30

Laravel迁移数据库!

创建新没啥好说字段类型一定要选好,如果写好了,又进行了迁移,数据库也生效了,这时候,半路上要修改字段类型, 最好数据库里没数据,要是有,可就要遭殃,比如说原本是 varchar(50),有的字段写满了...而在 laravel 里对一个空修改字段,完全可以通过,我们创建新迁移文件,然后在 up 方法内这样调用: $table->string('name', 100)->change(); 看,只用调用一个...->after('last_name'); 仅仅修改字段名,只需调用对应方法: $table->renameColumn('promoted', 'is_promoted'); 或者在回滚方法对某些新增字段进行删除...']); // 联合主键 还有唯一性约束,为存在字段创建: $table->unique('email'); // 唯一性 $table->unique('email', 'optional_custom_index_name...上面给这些个方法,足够应对很多很多场景了。 写在最后 本文介绍了laravel中使用迁移功能操作数据库创建,修改,移除字段,删除等,把开发者从手动维护数据库状态解脱出来。

95110

Laravel迁移数据库!

创建新没啥好说字段类型一定要选好,如果写好了,又进行了迁移,数据库也生效了,这时候,半路上要修改字段类型, 最好数据库里没数据,要是有,可就要遭殃,比如说原本是 varchar(50),有的字段写满了...而在 laravel 里对一个空修改字段,完全可以通过,我们创建新迁移文件,然后在 up 方法内这样调用: $table->string('name', 100)->change(); 看,只用调用一个...->after('last_name'); 仅仅修改字段名,只需调用对应方法: $table->renameColumn('promoted', 'is_promoted'); 或者在回滚方法对某些新增字段进行删除...']); // 联合主键 还有唯一性约束,为存在字段创建: $table->unique('email'); // 唯一性 $table->unique('email', 'optional_custom_index_name...上面给这些个方法,足够应对很多很多场景了。 写在最后 本文介绍了laravel中使用迁移功能操作数据库创建,修改,移除字段,删除等,把开发者从手动维护数据库状态解脱出来。

1.1K00

MySQL 数据库 增删查改、克隆、外键 等操作

(不包括),从开始行数开始共几行 UPDATE 更新 注意WHERE 加更新条件,不然会更新所有 UPDATE 名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式...VARCHAR(20) DEFAULT '在用'; 删除字段 ALTER TABLE 名 DROP 字段名; 修改字段(列)名,添加唯一键约束 ALTER TABLE 名 CHANGE...KEY 唯一键:可以用有空值,不能出现重复值,也不能为 NULL, 查看、删除、添加 索引 #查看表有哪些索引 SHOW INDEXES FROM 名; 单独新增 去除唯一键约束...#给字段 DEV_NAM 增加唯一键约束 ALTER TABLE USER_MESG ADD UNIQUE INDEX (DEV_NAME); #给字段 DEV_NAM 去除唯一键约束 #查看索引...;一张只能有一个主键, 但是一张可以有多个唯一键 #not null:表示此字段不允许为NULL 数据高级操作 克隆,将数据数据记录生成到新 方法一:使用 like #先克隆结构

5.8K20

Laravel jwt 多表(多用户端)验证隔离实现

# JWT 多表验证隔离 为什么要做隔离 当同一个 laravel 项目有多端(移动端、管理端……)都需要使用 jwt 做用户验证时,如果用户有多个(一般都会有),就需要做 token 隔离,...会引发这个问题原因是 laravel jwt token 默认只会存储数据主键值,并没有区分是那个。所以只要 token 里携带 ID 在你用户中都存在,就会导致越权验证。...这个 token 通过你验证中间件时,你使用不同 guard 就能拿到对应 id 为 1 用户(了解 guard 请查看 laravel 文档)。...解决办法 想要解决用户越权问题,我们只要在 token 上带上我们自定义字段,用来区分是哪个或哪个验证器生成,然后再编写自己中间件验证我们自定义字段是否符合我们预期。...: getJWTIdentifier :获取会储存到 jwt 声明标识,其实就是要我们返回标识用户主键字段名称,这里是返回是主键 ‘id’, getJWTCustomClaims:返回包含要添加到

2K31

MySQL 慢查询、 索引、 事务隔离级别

两张比较大进行 JOIN,但是没有给相应字段加索引 存在索引,但是查询条件过多,且字段顺序与索引顺序不一致 对很多查询结果进行 GROUPBY 索引 创 建 索 引 就... , 不 允 许 重 复 索 引 , 支 持 单 列 和 多 列 。...注 意 , 如 果 是 多 列 共 同 构 成 一 索 引 , 代 是 多 列 数 据 组 合 是 。...尽量选择区分度高列作为索引,区分度公式是 count(distinct col)/count(*),表示字段不重复比例,比例越大我们 扫描记录数越少,唯一键区分度是 1,而一些状态、性别字段可能在大数据面前区分度就是...索引列不能参与计算,保持列“干净”,比如 from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很 简单,b+树都是数据字段值,但进行检索时

2.8K50

Laravel中使用路由控制权限(不限于Laravel,只是一种思想)

每一个页面认证当前需要权限一次 在统一地方(中间件)验证 先上一下简单结构(只保留重要信息)数据库模型 ER 图 数据库模型图 (ps:这个设计,用户不会直接拥有权限,只能通过角色继承权限...需要权限 * 2. 遍历当期那用户拥有的所有角色 * 3....php namespace App\Models; class Permission extends Model { // 角色和权限模型关联关系 public function...,还是要在不同方法进行验证,而且可扩展性不高,这时候我们只需要在权限加一个字段,就可以解决问题 1. permissions (加多一个 route 字段, 如果不在 laravel 中使用,可以加一个...$route = Route::currentRouteName(); // 判断权限这条路由是否需要验证 if ($permission

16010

ResultMap和ResultType在使用区别

resultType做SQL语句返回结果类型处理时,对于SQL语句查询出字段在相应pojo必须有和它相同字段对应,而resultType内容就是pojo在本项目中位置。...因此对于单查询的话用resultType是最合适。但是,如果在写pojo时,不想用数据库定义字段名称,也是可以使用resultMap进行处理对应。...多表连接查询时,若是一对一连接查询,那么需要新建一个pojo,pojo包括两个需要查询出所有的字段,这个地方处理方式通常为创建一个继承一个表字段pojo,再在里面添加另外一个内需要查询出字段即可...-- id:指定查询列 一标识,订单信息 一标识,如果有多个列组成唯一标识,配置多个id               column:订单信息 一标识 列               property...-- id:指定查询列 一标识,订单信息 一标识,如果有多个列组成唯一标识,配置多个id               column:订单信息 一标识 列               property

1.7K10

MySQL数据库:数据完整性及约束应用

约束:constraint MySQL约束分类 主键:primary key 唯一键:unique 非空:not null 缺省:default 外键:foreign key 主键、唯一键...、外键都会自动创建索引 主键:一个只能有一个主键,其可以对应一个字段,也可以对应多个字段(组合主键) 唯一键:也成为候选主键(跟主键区别在于可以存储null值) 外键:来源于主表主键或唯一键...key(对应字段) references 主表(主键字段唯一键字段) 创建组合主键 primary key (字段1,字段2) 对于已经存在,创建唯一键约束 alter table 名 add...alter table 名 drop foreign key 外键名称; 删除唯一键 注意:唯一键删除后对应索引也会自动删除 alter table 名 drop index 唯一键字段名;...删除指定名称索引 alter table 名 drop index 索引名称; 提醒:对于有主外关联,删除数据,如果无删除级联操作,那么删除主表数据之前,必须先删除从对应数据

1.5K30

MySQL数据库:约束

,数据不能重复,但是一张只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束问题。...唯一键本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。 关于唯一键和主键区别: 我们可以简单理解成,主键更多是标识唯一。...而唯一键更多是保证在业务上,不要和别的信息出现重复。...而我们设计员工工号时候,需要一种约束:而所有的员工工号都不能重复。具体指的是在公司业务上不能重复,我们设计时候,需要这个约束,那么就可以将员工工号设计成为 一键。...foreign key (字段名) references 主表(列) 举例:  由于学生(stu)class_id是班级(myclass)id外键,因此,主表为班级(myclass),

23830

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

[img] 本期我们开始讲模型,如何插入新条目,或者更新既有条目。...代码时间 我们在构建一个hello world页面的时候,已经介绍了如何使用laravel命令行脚手架创建新模型文件,以及通过迁移功能创建数据库。这样就把数据操作衔接起来了。...我们在还有id字段,created_at字段,updated_at字段,并没有显式赋值。但是你打开数据库查看结果时候,发现那些值也成功写入了。...这样laravel在处理模型数据时候,会默认更新此二字段。 然而,对于写入数据库那些数据,并不是所有字段都会允许写入。在模型内我们可以手动指定哪些字段可以写,哪些字段不可以写。...新建 or 更新 接着介绍laravel模型几个语法糖。一个常规场景,比如在写入数据时,先判断数据库内是否有该条记录,如果没有就创建,如何有则返回。

1.9K00

Laravel5.5 session 配置及使用示例讲解

,虽然没有信息研究核心源码,至少要能灵活顺畅应用,接下来,主要是介绍Session在 Laravel5.5 应用,欢迎指导建议,必将虚心求知 … 框架:Laravel5.5 重点:Session...机制,核心逻辑请参考 Illuminate\Session\Middleware\StartSession这个中间件,因此在 Laravel 应用不要试图通过$_SESSION方式去获取应用 Session...另外,还有一个大家都感到困惑问题,就是在 Laravel 控制器构造函数是无法获取应用 Session 数据,这是因为 Laravel Session 通过 StartSession 中间件启动...可以使用 Artisan 命令 session:table 在数据库创建: php artisan session:table ?...并且字段 user_id 没有赋值 每次页面刷新或跳转,在时效内,都会进行更新唯一不变是 id 不变,待到有效期过后或者更换浏览器再增加新记录.

1.4K10

为什么 Laravel 这么优秀?

Artisan 是一个 SHELL 脚本,是通过命令行操作 Laravel 唯一入口。...因为我们已经完成了数据字段定义、关系、以及最重要一步:如何将数据及数据之间关系写入数据库,下面简单来介绍下在 Laravel 是如何完成。...而 Laravel 提供 FormRequest 就可以非常方便做到这一点;你可以在 FormRequest 定义前端传入每一个字段验证规则。...强大辅助函数和丰富 API,在下面的代码我们甚至可以做到一行代码就完成课程创建及依赖关系更新。...我们还使用了 Laravel Resource 来格式化最终输出格式,这样做原因是很多情况下我们不希望直接将数据库字段暴露出去,你甚至还能在 Laravel Resource 按不同角色显示不同字段

16710
领券