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视图组件(Laravel5.4框架中视图共享数据的方法详解)
- 关于laravel的日常(解决在laravel中auth建立时候遇到的问题)
- laravel框架怎么定时任务(laravel Model 执行事务的实现)
- laravel框架的运行机制(Laravel5框架自定义错误页面配置操作示例)
- laravel增删改查接口(laravel-admin 实现给grid的列添加行数序号的方法)
- laravel新增数据表(laravel实现上传图片的两种方式小结)
- laravel获取数据(laravel 判断查询数据库返回值的例子)
- laravel数据库配置(Laravel如何同时连接多个数据库详解)
- laravel权限控制(laravel-admin 在列表页添加自定义按钮的例子)
- laravel 前后端开发(在Laravel中实现使用AJAX动态刷新部分页面)
- laravel 数据库配置信息(Laravel 读取 config 下的数据方法)
- laravel自定义命令(laravel中数据显示方法默认值和下拉option默认选中)
- laravel图文消息后台处理(laravel利用中间件防止未登录用户直接访问后台的方法)
- laravel队列流程(Laravel 创建指定表 migrate的例子)
- laravel数据绑定(laravel-admin表单提交隐藏一些数据,回调时获取数据的方法)
- 怎么删掉laravel(laravel-admin的图片删除实例)
- 美国数十万加仑牛奶倒进下水道,世界会重演1929年的大萧条吗(美国数十万加仑牛奶倒进下水道)
- 美国数十万加仑牛奶倒入下水道,贫民区食不果腹,历史再次重演(美国数十万加仑牛奶倒入下水道)
- 美国倒掉数十万加仑牛奶 上热搜第一,这一幕似曾相识(美国倒掉数十万加仑牛奶)
- 深度 倒牛奶 这一幕为何又在美国上演(深度倒牛奶)
- 美国数十万加仑牛奶倒下水道怎么回事 原因曝光令人心痛(美国数十万加仑牛奶倒下水道怎么回事)
- 探索中国神秘文字(探索中国神秘文字)
热门推荐
- js的异步请求(浅谈JS三座大山之异步和单线程)
- 如何使用sqlserver建立数据表(SqlServer编写数据库表的操作方式建库、建表、修改语句)
- htaccess重定向详解设置(htaccess 将所有请求重定向到某个URL地址的规则)
- 学习.NET需要掌握哪些方面
- dedecms官方安装手册(Linux下安装DedeCMS及安全设置教程)
- angular使用方法(Angular环境搭建及简单体验小结)
- laravel 框架关键技术解析(在laravel框架中实现封装公共方法全局调用)
- docker python如何运行(Docker容器化部署Python应用过程解析)
- 织梦dedecms专题页制作详细教程(dedecms教程之dedecms生成速度提速的方法)
- linux中基本操作系统有什么(Linux操作系统的概述与简介)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9