Laravel 5.5 中间表类型转换 | Laravel China 社区


本站和网页 https://learnku.com/articles/5190/laravel-55-intermediate-table-type-conversion 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Laravel 5.5 中间表类型转换 | Laravel China 社区
Laravel
话题列表
社区 Wiki
优质外文
招聘求职
Laravel 实战教程
社区文档
登录
注册
Laravel
首页
Laravel
Go
PHP
Vue.js
Python
Java
MySQL
Rust
LK
Elasticsearch
F2E 前端
Server
程序员
Database
DevTools
Computer Science
手机开发
AdonisJS
社区
Wiki
教程
Laravel 实战教程首页
《L01 Laravel 教程 - Web 开发实战入门》
《L02 Laravel 教程 - Web 开发实战进阶》
《L03 Laravel 教程 - 实战构架 API 服务器》
《L04 Laravel 教程 - 微信小程序从零到发布》
《L05 Laravel 教程 - 电商实战》
《L06 Laravel 教程 - 电商进阶》
《LX1 Laravel / PHP 扩展包视频教程》
《LX2 PHP 扩展包实战教程 - 从入门到发布》
《L07 Laravel 教程 - Laravel TDD 测试实战》
《LX3 Laravel 性能优化入门》
《LX4 Laravel / PHP 五分钟视频》
文档
社区文档首页
《Laravel 中文文档》
《Laravel 速查表》
《PHP 代码简洁之道》
《Laravel 编码技巧》
《Dcat Admin 中文文档》
《Laravel Nova 中文文档》
《Lumen 中文文档》
《Dingo API 中文文档》
《 Laravel 项目开发规范》
《构建 Laravel 开发环境》
登录
注册
微信登录
Laravel 5.5 中间表类型转换
23
JokerLinly 的个人博客
8007
创建于 5年前
Laravel 5.5 新增了向中间表模型插入或者更新数据时对类型转换的支持。
目前,在原来的模型中你可以用 $casts 来双向转换。任何继承 Eloquent\Model 类的模型都会查找 $casts 属性,并在读取和写入时将指定的属性转化为数据类型。例如,文档 里面有个例子:
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
/**
* The attributes that should be cast to native types.
* @var array
*/
protected $casts = [
'is_admin' => 'boolean',
];
在 Laravel 5.4 中,Taylor 也在自定义中间表模型上添加了定义 $casts 属性的功能,但是只在读取数据时应用了 $casts ,而插入或更新属性时并不会执行转换。
例如,假设你有 Runner 赛跑者模型和 Race 比赛模型。 一个跑步者可以有很多比赛,一场比赛可以有很多赛跑者。 我们把中间表模型称为 RaceRunner,其中包括具有不同数量的单圈时间(取决于比赛的长度,以秒为单位)的 splits 数组,以及所需的 runner_id 和 race_id。
splits 数组在 race_runner 表中以 JSON 格式序列化,因此如果你在 RaceRunner 中间表模型的 $casts 中将 splits 定义为数组,那 dd 出来的结果就会是数组:
dd( $runner->pivot->splits );
// Example:
'Lap 1' => 150,
'Lap 2' => 163,
'Lap 3' => 146
只是,在创建或更新中间表模型时,你还是要手动转换:
// Cast first...
$splits = $splits->toJson();
// ...then attach:
$runner->races()->attach($raceId, ['splits' => $splits]);
现在,在 Laravel 5.5,Eloquent\Model 和 Eloquent\Relations\Pivot 类的 $casts 属性都会 有一样的行为。 无论你是读取、插入还是更新数据,Laravel 都会「遵循」$casts 属性的设置。 也就是 attach、sync 和 save 方法也可用于中间表模型。 这个新功能会应用在上面的例子里,即 // Cast first … 后面这一步的代码将不再需要。
关于中间表 Pivot 的用法可以查看 文档, 更多的还有 Leo 大神 的 Laravel 技巧之 Pivot :satisfied:
参考链接:https://laravel-news.com/laravel-5-5-pivot...
本作品采用《CC 协议》,转载必须注明作者和本文链接
Stay Hungry, Stay Foolish.
本帖由 leo
于 5年前 加精
举报
JokerLinly
教程VIP
1.4k 声望
安正超粉丝协会会长大人 :see_no_evil:
23 人点赞
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
推荐文章:
更多推荐...
博客
Git速查表
28
6个月前
博客
消息中间件应用的常见问题与方案
20
7个月前
博客
使用中间件记录Laravel慢请求
18
10
10个月前
博客
常用分库分表方案
24
1年前
博客
API接口设计
55
14
1年前
博客
利用orm 在业务代码无感知下,实现实现分库分表
19
14
1年前
讨论数量: 7
排序:
时间
投票
awesee
158 声望
研发工程师 @ awesee
赞一个。
5年前
评论
评论
举报
Destiny
课程读者
795 声望
PHP、Go、React、Nextjs @ 自由职业
琳姐,你知道图片中的字体是啥字体吗?
5年前
评论
评论
举报
JokerLinly
教程VIP
1.4k 声望
@Destiny OperatorMono
5年前
评论
评论
举报
Destiny
课程读者
795 声望
PHP、Go、React、Nextjs @ 自由职业
@JokerLinly 好滴好滴,阿里嘎多!
5年前
评论
评论
举报
xuzili
28 声望
有点看不懂 中间表模型 是什么
5年前
评论
评论
举报
JokerLinly
教程VIP
1.4k 声望
@我是谁 在这篇文章中就相当于是 RaceRunner Model
5年前
评论
评论
举报
_杭城浪子
课程读者
390 声望
PHP & java @ nc
@JokerLinly 相关的源码在哪里
4年前
评论
评论
goudan
2年前
如果没有猜错,应该是:Illuminate\Database\Eloquent\Concerns\HasAttributes:castAttribute
举报
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
<a href="javascript:;" class="mr-2 ui popover text-mute" data-html="黏贴或拖拽图片至输入框内皆可上传图片">
<a href="javascript:;" class="mr-2 ui popover text-mute hide-on-mobile" data-html="支持除了 H1~H6 以外的GitHub 兼容 Markdown">
支持 MD
帮助
关注本文
评论
JokerLinly
未填写
文章
59
粉丝
840
喜欢
3097
收藏
783
排名:2
访问:87.9 万
关注
私信
所有博文
阅读模式
文章归档
1 篇
2019 年 6 月
1 篇
2018 年 7 月
1 篇
2018 年 6 月
1 篇
2017 年 12 月
2 篇
2017 年 11 月
1 篇
2017 年 9 月
5 篇
2017 年 8 月
6 篇
2017 年 7 月
6 篇
2017 年 6 月
11 篇
2017 年 5 月
8 篇
2017 年 4 月
16 篇
2017 年 3 月
最新文章
最受欢迎
3年前
[技能篇] 程序员工作以后该如何提升?
4年前
Mac 使用 Valet 花式部署 PHP 项目
4年前
Laravel 的十八个最佳实践
5年前
如何在 Laravel 中创建自己的 PHP 辅助函数
5年前
如何编写一个 Vue JS 内嵌组件
523
Laravel 的十八个最佳实践
271
两个非常棒的 Laravel 权限管理包推荐
180
面对现实吧!维护大型 PHP 应用程序不简单!
166
Laravel 5.5 LTS 正式发布!(包含新功能说明)
143
Laravel 推荐好用扩展包整合版
博客标签
laravel
horizon
社区赞助商
成为赞助商
社区赞助商
成为赞助商
关于 LearnKu
LearnKu 是终身编程者的修道场
做最专业、严肃的技术论坛
LearnKu 诞生的故事
资源推荐
《社区使用指南》
《文档撰写指南》
《LearnKu 社区规范》
《提问的智慧》
服务提供商
其他信息
成为版主
所有测验
联系站长(反馈建议)
粤ICP备18099781号-6
粤公网安备 44030502004330号
违法和不良信息举报
由 Summer 设计和编码 ❤
请登录
提交
忘记密码?
or
注册
第三方账号登录
微信登录
GitHub 登录
内容举报
匿名举报,为防止滥用,仅管理员可见举报者。
我要举报该,理由是:
垃圾广告:恶意灌水、广告、推广等内容
无意义内容:测试、灌水、文不对题、消极内容、文章品质太差等
违规内容:色情、暴利、血腥、敏感信息等
不友善内容:人身攻击、挑衅辱骂、恶意行为
科学上网:翻墙、VPN、Shadowsocks,政策风险,会被关站!
不懂提问:提问太随意,需要再做一遍《提问的智慧》测验
随意提问:提问没有发布在社区问答分类下
排版混乱:没有合理使用 Markdown 编写文章,未使用代码高亮
内容结构混乱:逻辑不清晰,内容混乱,难以阅读
标题随意:标题党、标题不释义
尊重版权:分享付费课程、破解软件(付费),侵犯作者劳动成果
其他理由:请补充说明
举报
取消