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
您可能感兴趣
- laravel如何设置默认模块(laravel-admin 中列表筛选方法)
- laravel框架的高级知识点(laravel配置Redis多个库的实现方法)
- laravel常用的辅助函数介绍(Laravel框架表单验证操作实例分析)
- laravel新增数据表(laravel 多图上传及图片的存储例子)
- laravel设置跨域请求(解决laravel 出现ajax请求419unknown status的问题)
- laravel前后端分离模块化(laravel 实现划分admin和home 模块分组)
- laravel 开发自定义组件(解决Laravel blade模板转义html标签的问题)
- laravel跳转后需要授权吗(解决Laravel5.2 Auth认证退出失效的问题)
- laravel怎样封装增删改查(laravel框架上传图片实现实时预览功能)
- laravel异步日志(laravel异步监控定时调度器实例详解)
- laravel框架配置(Laravel框架实现多数据库连接操作详解)
- laravel授权使用方法(Laravel 自带的Auth验证登录方法)
- laravel模块教程(Laravel框架创建路由的方法详解)
- laravel框架运行找不到视图(解决laravel资源加载路径设置的问题)
- laravel视图组件(Laravel5.4框架中视图共享数据的方法详解)
- laravel获取数据(laravel 判断查询数据库返回值的例子)
- 菲律宾游学(菲律宾游学中介机构)
- 菲律宾美食(菲律宾美食排行榜前十名)
- 菲律宾特产(菲律宾特产最值得买回国)
- 越南特产(越南特产首饰)
- TVB负评王连续挑战警察角色《使徒行者3》中将饰演卧底(TVB负评王连续挑战警察角色使徒行者3中将饰演卧底)
- 《精英律师》剧照首曝光,实力演员飙戏,演绎律政职场百态(精英律师剧照首曝光)
热门推荐
- windows10怎么设置iis框架(Windows10系统如何安装IIS服务器)
- 启动sqlserver代理服务失败(SQL Server代理服务无法启动怎么办)
- dedecms v5.7使用教程(织梦dedecms数据库类$dsql使用方法步骤)
- php中抽象类和接口的区别(PHP抽象类和接口用法实例详解)
- php数组实例说明(PHP检测一个数组有没有定义的方法步骤)
- yii2和laravel框架哪个比较简单(关于Yii中模型场景的一些简单介绍)
- 互联网云服务器需要配置(视频云服务器的配置一般怎么选?)
- css3左右移动动画效果(CSS3鼠标悬浮过渡缩放效果)
- python数字形式转换详解(Python3.5实现的罗马数字转换成整数功能示例)
- vue导出动态的excel功能(vue中如何下载excel流文件及设置下载文件名)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9