首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel雄辩的模型模型属性铸造(我应该铸造哪些属性类型?)

Laravel雄辩的模型模型属性铸造(我应该铸造哪些属性类型?)
EN

Stack Overflow用户
提问于 2020-10-30 07:54:29
回答 1查看 14.4K关注 0票数 3

我不确定我完全理解拉勒维尔雄辩的属性铸造。根据文档,(https://laravel.com/docs/8.x/eloquent-mutators#attribute-casting),这些是受支持的类型:

整数,实数,浮点数,双小数点:,字符串,布尔值,对象,数组,集合,日期,日期,时间,时间戳,加密,加密:对象,加密:数组,加密:集合

到目前为止,我只对我的模型使用了日期转换(当字段作为时间戳存储在db中时),如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected $dates = [
    'modified_at', 'published_at'
];

当将值存储为整数(0或其他事物)时,我还理解了将属性转换为布尔值的必要性。

但是其他属性类型(例如整数)呢,我应该总是进行属性转换吗?还是仅仅当数据库中的字段类型不同时?用例是什么,或者其他属性的最佳实践是什么?

(例如,我不能想象在迁移中创建一个字符串字段,然后将其中的一些数字保存为string,然后将其转换回模型中的整数?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-30 08:41:52

默认情况下,属性将转换为表中定义的列类型。因此,如果您的列是一个整数,那么它将被转换为int

但是,如果要针对特定字段修改此行为,会发生什么?这就是属性转换进入场景的时候。

例如,假设在一个名为projects的表中有一个名为configjson类型的列,在该列中我们可以存储每个项目的附加配置元素。

在我的例子中,能够以array的形式处理这些数据是很有用的。因此,我们可以只处理简单的stringobject,而不是接收一个arrayobject。为了做到这一点,我们只是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Project extends Model
{
    // ...

    protected $casts = [
        'config' => 'array',
    ];

    // ...
}

这样,每当我们使用雄辩的方法从数据库中获取项目时,每个记录都将该属性作为array。而且,在尝试存储/更新记录时,它将被转换回json

当然,与您指定的情况有关(将元素保存为string,然后将其检索为integer)是完全可能的。您需要同时设置该字段的访问器和变送器。对于名为number的属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * This will be called when fetching the element.
 */
public function getNumberAttribute($value)
{
    return (int)$value;
}

/**
 * This will be called when storing/updating the element.
 */
public function setFirstNameAttribute($value)
{
    $this->attributes['number'] = (string)$value;
}

现在,是需要这样做的原因吗?,您可能处理的数据库设计不当,或者生产数据库正在被多个系统使用,而且数据库中的更改很难完成。在这些情况下,您可以使用这种值操作,以便在您的应用程序中工作。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64611696

复制
相关文章
测试思想-测试设计 测试用例设计之等价类划分方法
把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
授客
2019/09/11
1.4K0
测试思想-测试设计 测试用例设计之等价类划分方法
测试用例方法
等价类划分 是把所有可能输入的数据分为若干个区域,然后从每个区域中取少量有代表性的数据进行测试即可。
派大星在吗
2021/12/06
7070
测试用例的设计方法:等价类划分法[通俗易懂]
常见测试用例的设计方法有八种,下图中标红的是需要掌握的。优先级从等价类划分法,边界值分析法方向排序。每种设计方法,我都会分析,今天我们先一起看看什么是等价类划分法。
全栈程序员站长
2022/11/02
8250
黑盒测试用例测试方法
等价类划分法是一种典型的、重要的黑盒测试方法,是指某个输入域的子集合。在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。
全栈程序员站长
2022/07/01
1.2K0
黑盒测试用例测试方法
等价类划分法设计测试用例例题_有效等价类测试用例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
6210
等价类划分法设计测试用例例题_有效等价类测试用例
什么是 Java 对象深拷贝?面试必问!
浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。
Java技术栈
2019/09/16
9420
什么是 Java 对象深拷贝?面试必问!
测试用例设计方法
等价类划分 是把所有可能输入的数据分为若干个区域,然后从每个区域中取少量有代表性的数据进行测试即可。
花落花相惜
2021/11/26
6440
软件测试(测试用例)—写用例无压力
主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。
伤心的辣条
2022/12/14
1.3K0
软件测试(测试用例)—写用例无压力
软件测试用例编写方法_软件测试用例包括
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/19
7540
软件测试用例编写方法_软件测试用例包括
【测试】黑盒测试用例设计方法
等价类划分法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。
全栈程序员站长
2022/08/10
2K0
【测试】黑盒测试用例设计方法
等价类测试用例设计原则_边界值法测试用例
   等价类划分法是黑盒测试中非常重要的测试方法,采用等价类划分法时,无需考虑程序内部结构,设计测试用例是依据游戏策划案进行设计的
全栈程序员站长
2022/11/02
9080
等价类划分法测试用例举例_使用等价类划分法设计测试用例
是在测试执行之前,由测试人员进行编写的指导测试过程的重要文档,主要包括:用例编号,测试目的,测试步骤(用例描述),预期结果(期待结果)等(不同公司模板不同,但是大同小异)
全栈程序员站长
2022/09/27
5890
软件测试用例编写方法_接口测试用例设计思路
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/19
5990
软件测试用例编写方法_接口测试用例设计思路
常用八大测试用例设计方法有哪些_测试用例编写方法
1、等价类划分(Equivalance Partitioning)测试的思想:将程序的输入域划分为若干个区域(等价类),并在每个等价类中选择一个具有代表性的元素生成测试用例。该方法是常用的黑盒(Blackbox Testing)测试用例(Testcase)设计方法。
全栈程序员站长
2022/11/04
2.8K0
常用八大测试用例设计方法有哪些_测试用例编写方法
设计测试用例的方法
(1)有限的时间内测试,保证用户经常使用(使用频率比较高,主要的,核心的功能)功能的质量。 (2)如果有限的时间所有的功能不能完全测完,可以和产品经理开发商量,把没有通过测试的,有风险的功能把用户的入口,屏蔽掉(让用户无法使用),产生错误风险就会降低。 (3)本次测试,测试报告写清楚,这次上线,哪些功能测试了,哪些功能没有测试,上线风险分析清楚。
全栈程序员站长
2022/08/31
5480
设计测试用例的方法
初尝 Jest 单元测试
最近的几次发布都犯了小错,都是缺乏或者忽视了测试所导致的。通常来说,一个新功能上线的时候,开发和测试都投入比较多,各项测试都是比较全面的。然而,发布上线也并非意味着不再有bug或者修改。那这时候问题来了,有些修改, 我们会以为很简单,从而放松警惕,偷懒也罢,没有精力也罢,简单验证之后便匆匆发布了。此时,有可能不经意的改动对其它功能造成了影响,bug复bug, bug何其多呀。
IMWeb前端团队
2019/12/04
1.6K0
软件测试用例的设计方法_设计测试用例的依据
把程序的输入域和输出域划分成若干部分,然后从各个部分中选取若干代表性数据作为测试用例。这些数据在测试中的作用等价于其所属部分的其他值。
全栈程序员站长
2022/11/07
9770
软件测试用例的设计方法_设计测试用例的依据
初尝 Jest 单元测试
最近的几次发布都犯了小错,都是缺乏或者忽视了测试所导致的。通常来说,一个新功能上线的时候,开发和测试都投入比较多,各项测试都是比较全面的。然而,发布上线也并非意味着不再有bug或者修改。那这时候问题来
IMWeb前端团队
2017/12/29
1.8K0
初尝 Jest 单元测试
JUnit4:在测试用例中用FixMethodOrder指定测试方法的执行顺序
2018/09/30补记:感谢评论的指正,@FixMethodOrder的顺序也并不一定是方法在代码中定义的顺序,这与JVM的实现有关,我猜在class中方法名是保存在一个map中,不同JVM对map的实现不同,导致并不一定是按代码定义顺序的。
10km
2022/05/07
7840
JUnit4:在测试用例中用FixMethodOrder指定测试方法的执行顺序
黑盒测试用例设计方法二
定义:分析和表述若干输入条件下,被测对象对这些输入作出相应的一种表格。在遇到复杂业务逻辑时可以用该表理清业务逻辑关系。
吾非同
2020/10/23
5140

相似问题

实体框架具有双向关联时出现Webapi异常

10

使用实体框架检索的WebApi 2

12

尝试使用实体框架进行SaveChanges时的异常

13

实体框架和webapi中的列表

211

实体框架WebAPI模型UpSerts

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文