laravel框架怎么获取变量(解决laravel id非自增 模型取回为0 的问题)
类别:编程学习 浏览量:2985
时间:2021-10-11 00:35:32 laravel框架怎么获取变量
解决laravel id非自增 模型取回为0 的问题问题
laravel5.2 中 如果一个模型的id 为string等非自增类型时候 使用模型的find方法 会返会0
样例代码:
|
$a =Model::find( 'blcu' ); echo $a ->id; //结果为0 |
原因查找
通过var_dump(a)发现a)发现a
|
[ "attributes" : protected ]=> array (16) { [ "id" ]=> string(4) "blcu" |
也就是数据其实是读取出来了 只是->id取得时候 变成了0
查看Model的 getAttribute 方法,此方法指向了 getAttributeValue
|
public function getAttributeValue( $key ) { $value = $this ->getAttributeFromArray( $key ); if ( $this ->hasGetMutator( $key )) { return $this ->mutateAttribute( $key , $value ); } if ( $this ->hasCast( $key )) { return $this ->castAttribute( $key , $value ); //这一行是导致数值改变的地方 } if (in_array( $key , $this ->getDates()) && ! is_null ( $value )) { return $this ->asDateTime( $value ); } return $value ; } |
查看 castAttribute 如果 >getCastType(‘id') 如果为int 则 (int)$value
|
protected function castAttribute( $key , $value ) { if ( is_null ( $value )) { return $value ; } switch ( $this ->getCastType( $key )) { case 'int' : case 'integer' : return (int) $value ; //这一行 |
查看 >getCastType
|
protected function getCastType( $key ) { return trim( strtolower ( $this ->getCasts()[ $key ])); } |
getCasts
最中改变值得代码:
|
public function getCasts() { if ( $this ->getIncrementing()) { //如果Model了的$incrementing字段为True return array_merge ([ $this ->getKeyName() => 'int' , //返回id=>'int' ], $this ->casts); } return $this ->casts; } |
结论
Model的$incrementing 默认为true
当我们使用id为 非自增的时候 laravel 会把字符串转为int 所以输出了0
解决方案
给模型生命的时候添加
public $incrementing=false; 即可解决
以上这篇解决laravel id非自增 模型取回为0 的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/dream_dt/article/details/79210637
您可能感兴趣
- laravel5.1获取数据(laravel5表单唯一验证的实例代码)
- laravel事件返回错误数据(laravel Validator ajax返回错误信息的方法)
- laravel完成权限验证(laravel实现Auth认证,登录、注册后的页面回跳方法)
- laravel提取数据库的字段(Laravel创建数据库表结构的例子)
- laravel怎么返回指定列(laravel-admin解决表单select联动时,编辑默认没选上的问题)
- laravel框架如何查询空的信息(Laravel中validation验证 返回中文提示 全局设置的方法)
- laravel框架少见方法详解(laravel 配置路由 api和web定义的路由的区别详解)
- laravel算法(laravel批量生成假数据的方法)
- laravel如何设置默认模块(laravel-admin 中列表筛选方法)
- laravel关于视图使用语法(在laravel中使用with实现动态添加where条件)
- laravel开发api支持多少并发(laravel框架 api自定义全局异常处理方法)
- laravel框架怎么定时任务(laravel Model 执行事务的实现)
- laravel查询条件数组写法(解决Laravel 使用insert插入数据,字段created_at为0000的问题)
- laravel模型详解(laravel config文件配置全局变量的例子)
- laravel数据库管理教程(Laravel基础_关于view共享数据的示例讲解)
- laravel mysql 操作方式(Laravel使用原生sql语句并调用的方法)
- 乾隆为何这么喜爱白塔原因是什么(乾隆为何这么喜爱白塔原因是什么)
- 逐渐消失的东北八大怪现象,进步的社会里我们遗失的是什么(逐渐消失的东北八大怪现象)
- 今日大雪,大雪养生这样做,一年都有好气色(大雪养生这样做)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
- 男人犯的错,为什么要女人来承担(为什么要女人来承担)
热门推荐
- mysql忽略大小写(MySQL大小写敏感的注意事项)
- python生成密码字典教程(Python利用字典破解WIFI密码的方法)
- sqlserver 多实例怎么算许可(SQL Server使用row_number分页的实现方法)
- dockerrun执行脚本(docker run和start的区别说明)
- python函数使用方法高级用法(Python函数的参数常见分类与用法实例详解)
- dem高低值怎么调整(dede5.7修改标题title长度方法总结)
- dedecms屏蔽规则(织梦dedecms修改任意管理员漏洞处理方法)
- mysql的简单介绍(MySQL Shell的介绍以及安装)
- C# Task实现多线程
- dede网站怎么修改数据结构表(Dede中通过SQL调用简略标题shorttitle和链接地址的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9