首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法使用laravel雄辩关系latest()函数获取最后一个值,因为驼峰大小写

问题描述:无法使用laravel雄辩关系latest()函数获取最后一个值,因为驼峰大小写。

答案:在使用laravel雄辩关系latest()函数获取最后一个值时,驼峰大小写是一个重要的注意事项。在laravel中,数据库表名和字段名默认使用的是下划线命名法(snake_case),而模型类名和关联方法使用的是驼峰命名法(camelCase)。

当我们使用latest()函数时,它会根据模型类名自动推断出对应的数据库表名,并使用created_at字段进行排序。但是,如果模型类名和数据库表名不一致,或者模型类名中包含大写字母,就会导致无法正确获取最后一个值的问题。

解决这个问题的方法有两种:

  1. 手动指定表名和排序字段:可以使用$table属性来手动指定模型对应的数据库表名,使用$primaryKey属性来手动指定模型对应的主键字段。同时,在latest()函数中传入排序字段名,例如:
代码语言:txt
复制
class MyModel extends Model
{
    protected $table = 'my_table';
    protected $primaryKey = 'my_id';

    public function getLastRecord()
    {
        return $this->latest('created_at')->first();
    }
}
  1. 使用laravel的约定:按照laravel的约定,模型类名应该与数据库表名对应,并且使用驼峰命名法。如果模型类名和数据库表名一致,并且都使用驼峰命名法,就可以直接使用latest()函数获取最后一个值,例如:
代码语言:txt
复制
class MyModel extends Model
{
    public function getLastRecord()
    {
        return $this->latest('created_at')->first();
    }
}

总结:在使用laravel雄辩关系latest()函数获取最后一个值时,需要注意模型类名和数据库表名的一致性,并且遵循laravel的命名约定。如果模型类名和数据库表名不一致,或者模型类名中包含大写字母,需要手动指定表名和排序字段。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

需要掌握的 Laravel Eloquent 搜索技术

Laravel 中可以使用 where 方法实现对给定字段和给定进行比较查询,就是这样简单。 <?...首先,除了 like 关键字外还多了些 SQL 语法,因为这里我们传入的是一条 原生 SQL 表达式 。 其次,在第 2 个 lower 函数内加入了 ?...依据单词发音进行模糊匹配 继续探讨最后一个主题,当用户输入的查询表达式包含错误的单词拼写时,该如何进行搜索呢?查询与给定的表达式有类似发音的语句是个不错的主意。...这种场景我们无法使用 like 关键字,但我们有 sound like 关键字。...5.6.8 以上的 Laravel 版本,可以查看 Laravel changelog 执行 sound like 操作,会进行一个发音相似性的算法,然后获取结果集。

3.5K10

需要掌握的 Laravel Eloquent 搜索技术

Laravel 中可以使用 where 方法实现对给定字段和给定进行比较查询,就是这样简单。 <?...首先,除了 like 关键字外还多了些 SQL 语法,因为这里我们传入的是一条 原生 SQL 表达式。 其次,在第 2 个 lower 函数内加入了 ?...依据单词发音进行模糊匹配 继续探讨最后一个主题,当用户输入的查询表达式包含错误的单词拼写时,该如何进行搜索呢?查询与给定的表达式有类似发音的语句是个不错的主意。...这种场景我们无法使用 like 关键字,但我们有 sound like 关键字。...5.6.8 以上的 Laravel 版本,可以查看 Laravel changelog 执行 sound like 操作,会进行一个发音相似性的算法,然后获取结果集。

4.3K20
  • PHP-Laravel控制器使用(C)

    三、控制器使用© 控制器主要的作用主要负责接收用户输入请求,调度模型处理数据最后利用视图展示数据。 1、控制器文件写在哪里? 其位置位于app/Http/Controllers ?...4、控制器路由(项目以该方式为主) 即,如何使用路由规则调用控制器下的方法,而不再走回调函数。...Input::get(‘参数的名字’, ‘如果参数没有被传递使用该默认’) //类似php里三元运算符 Input::all(): 获取所有的用户的输入 Input::get('参数的名字'):...在Laravel中友好输出函数:dd(需要打印的内容); dd=dump + die dd函数之后的内容将不会继续执行; ?...在Laravel中除了Input类可以获取用户的输入,Request也可以获取用户输入。

    1.4K10

    ThinkPHP5框架与ThinkPHP3.2的对比区别

    正好大牛说要更新框架,最后确定了升级框架,原先使用的 ThinkPHP3.2 版本的,现在确定升级为 5 系列。...应该庆幸没选择其他框架,什么 CI、YII、Laravel 之类的,Laravel 了解过一些,但是没深入过,还是 TP 系列使用的顺手一些。...是不属于$_GET的,现在可以通过param获取,具体使用可以通过请求部分查询 我好像 TP3.2 经常使用 get 或者大 I 方法来获取 id 的参数的 模型的变动 新版的模型查询返回默认对象,系统默认增加了...的开发者,all 或 select 结果是对象的数组集合,是无法使用toArray进行转换的 在 TP3.2 中使用最多的还是 M 和 D 方法,查询find和select用的最多 ---- 命名规范...目录和文件名采用小写+下划线,并且以小写字母开头 类库、函数文件统一以.php为后缀 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致(包括大小写) 类名和类文件名保持一致,并统一采用驼峰法命名

    3.8K20

    变量和常亮

    ①常亮 常量是单个的标识符(名称)。在脚本中无法改变该。简单来说就是一个声明固定的无法去修改,只能去读取使用。常量和变量都是大小写字母都敏感的,就是大写和小写的常量和变量不是相同的。...在上述例子中已经声明了常量money的为180,这个money的常量只能被读取是无法修改的。 ②变量 变量是存储信息的容器。也就是说声明一个变量,变量是可以通过某种指令去修改它的。...多单词的命名法: 下划线法:user_name(下划线) 驼峰法: userName(小驼峰法) UserName(大驼峰法) 注意:常量命名规则和变量一致,遵循变量命名法; 常量相关常用的函数 isset...settype();// 某个变量永久性强制转换 gettype();//获取变量的类型 可变变量: 将一个普通变量的作为可变变量的变量名。...说白了就是通过动态获取普通的变量。代码演示吧。通过多加一个$符号获取 <?

    1.4K20

    Laravel 6 中缓存数据库查询结果的方法

    Laravel 预先安装了缓存驱动程序。因此你可以直接使用 Redis, Memcached 或者使用本地文件进行缓存操作。Laravel 附带了此功能。...Article::latest()- get(); 如果你只是想要避免命中缓存,你可以在命中最后一个方法之前使用 – dontCache() 。...这很有用,因为我们可以在缓存中标记查询,并在需要时再通过 tag 使所需的缓存失效。 举一个简单的例子,如果我们要在更新一篇文章时使文章列表不进行缓存,你可以像这样写。...']); flushQueryCache方法使用 latest:articles标记使缓存无效。...PS:Laravel缓存 1,Cache:put(‘key’,’val’,10);设置缓存 键:key , :val10:缓存时间十分钟 2,Cache:add(‘key’,’val’,10)

    5.2K41

    APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!

    就是大小写问题,那赶紧改。 " 1 背景 首页接口只有登录才可以进入,因为首页要展示获取用户账户的一些信息。...header 的 name 无论是大写还是小写,都会查出同一个。 当然你也可以这么传 这样的话谁在上面,Header 中使用的 name 就是那个。...A: 不同的容器下实现方式不同,这里列表说明 undertow tomcat jetty 请求参数大小写转换 不变 小写 驼峰 直接获取请求头某一个 headerName 忽略大小写,不能为空 忽略大小写...获取 Map 的 key 是驼峰命名法,要使用驼峰命名才可以获取使用 MultiValueMap 获取请求头 实际是从 LinkedHashMap 中获取,区分大小写 实际是从 LinkedHashMap...结束语 本文主要是分析生产遇到的一个问题,然后开始探究原因,开始的时候发现是 Spring 的原因,因为使用 Map 接收时, headerName 什么格式就是什么格式。

    1K20

    Laravel系列4.3】模型Eloquent ORM的使用(一)

    一是在上面的 Modal 类中,我们没有指定表名,但是框架会根据类名映射一个表名出来。规则是将大驼峰变成蛇式命名,比如 MTest 会变成 m_test 。...接下来还是几个小操作的演示,源码的分析我们依然放到最后。 关联操作 关联操作是什么意思呢?这个其实和数据库的关联操作是有关系的。...然后来到最后的 tap() 中,tap() 是一个 Laravel 框架中定义的全局函数,和 env() 函数在一起的,它的作用是将第一个参数当作第二个参数的参数传递给第二参数,并执行第二个参数后,将第一个参数再返回回来...其实就是第一个参数是一个,然后把它放到第二个参数中,这个参数是一个回调函数,然后通过回调函数使用这个进行其它的操作。这一段可能说得不太清楚,大家可以自己查看源代码然后调试一下就明白了。...最后 tap() 函数还是会把之前传递进行去的第一个参数的,也就是最终的那个 DbSex 对象再一路返回到 __get() 中,这样,就完成了整个链条的调用。

    8.9K20

    C语言_第二讲_规范以及常用数据类型

    匈牙利命名法具备语言独立的特性,并且首次在BCPL语言中被大量使用。由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。...这个后半部分的首字母可以大写,以区别前面的类型指示字母(参见驼峰大小写)。 例如: i_de f_fd db_d ch_c   第一个给定的信息可以很明确的直到是什么类型的....便于代码的可读性 驼峰大小写: 驼峰大小写(Camel-Case,Camel Case,camel case),电脑程序编写时的一套命名规则(惯例)。...当变量名和函数名称是由二个或多个单字链接在一起,而构成的唯一识别字时,利用“驼峰大小写”来表示,可以增加变量和函数的可读性。...例如: AddSum()    SubValue BinarraySerach()   由此可以看出每个函数的作用 例如第一个一个数的总数  第二个减去  第三个二进制数组查找.

    1.1K00

    PSR-各个框架遵循的统一编码规范现代PHPer的开发规范

    > 短输出标签; 一定不可 使用其它自定义标签。 这点相信很多 PHPer 都很容易遵守,而且在现实撸代码中一般都是采用正常的标签,因为如果要使用 PHP 的短标签<?= ?...),但 不能 同时做两件事 这里副作用的意思是:仅通过包含文件,不直接声明类、函数和常量等,而执行的逻辑操作,这个规定的意思差不多就是一个变量、方法或者一个类,只能相应完成一个操作、做一件事情,也就是我们平时撸码的时候...PHP 类的名称必须使用驼峰式,又名标题式,PHP 5.3 及以后版本的代码 必须 使用正式的命名空间,5.2.x 及之前的版本 应该 使用伪命名空间的写法 驼峰式和分词式这两种写法,驼峰式就是ShenYan...Unix LF (linefeed) 作为行的结束符,所有 PHP 文件 必须 以一个空白行作为结束,纯 PHP 代码文件 必须 省略最后的 ?...> 结束标签 对于这个必须省略最后的结束符号平时倒是没注意过,毕竟只写框架中只写开头 缩进 代码 必须 使用 4 个空格符的缩进,一定不可 用 tab 键 对于缩进这个问题,说是必须使用 4 个空格,但是在使用

    85920

    3分钟短文:可能是Laravel模板最直白的用法了,没有之一

    本期我们尝试着使用laravel的模板功能,把控制器内组装好的数据渲染到视图模板文件, 并做展示。...laravel为什么说是最优雅的框架呢?因为提供了许多优雅的方法,比如上面控制器方法内, 使用 View 对象的 with 方法,可以传递键值对,传递数组。...传递多个变量 上一节只在视图渲染的时候,传递了一个变量值,而实际业务中,我们不可能把所有的数据,都写入到同一个变量内, 然后在模板使用单个组装的变量。...一般我们没必要写一大串的 with 函数一个变量一个变量地传递。...写在最后 本文通过多种方法对从控制器内接收和组装的数据通过视图方法 view 函数 渲染到模板文件并展示,为了演示功能,我们使用的都是单个变量没有复杂结构的数据。

    1.9K20

    ThinkPHP5框架与ThinkPHP3.2的对比区别

    另外一个事实是,5.1 版本看起来对开发者更加友好,表现在目录结构更直观、调试输出更直观和代码提示更直观。...是不属于$_GET的,现在可以通过param获取,具体使用可以通过请求部分查询 我好像 TP3.2 经常使用 get 或者大 I 方法来获取 id 的参数的 模型的变动 新版的模型查询返回默认对象,系统默认增加了...的开发者,all 或 select 结果是对象的数组集合,是无法使用toArray进行转换的 在 TP3.2 中使用最多的还是 M 和 D 方法,查询find和select用的最多 命名规范 目录和文件名采用小写...+下划线,并且以小写字母开头 类库、函数文件统一以.php为后缀 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致(包括大小写) 类名和类文件名保持一致,并统一采用驼峰法命名(...如果可以的话以后用 TP5 写的项目就多了 路由 5.0 的 URL 访问不再支持普通 URL 模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规则(正则定义)的方式 Laravel 框架中也有路由的习惯

    1.2K30

    Laravel框架关键技术解析

    参数的 2.匿名函数既可以作为参数传递给函数,也可以做为变量赋值,进而控制函数的执行过程;可以从父作用域中继承变量,使用use关键字来继承;默认PHP是通过复制的方式传入上层变量进入匿名函数,如果需要改变上层变量的...3.Laravel框架中的应用:大量使用,如在服务提供者注册过程中,通过将服务名称与提供服务的匿名函数进行绑定,在使用时可以实现动态服务解析。...如果在布局模板文件中用@stop或@endsection结束这个区块,则视图文件将无法覆盖这个区块 @parent:用于显示继承的布局模板中的内容 @yield(‘区块文件’,'默认内容’):用于在布局文件中定义一个区块...控制反转是将组件间的依赖关系从程序内部提到外部容器来管理,而依赖注入是指组件依赖通过外部以参数或其他形式注入,两种说法本质上是一个意思 5.Laravel中:Illuminate\Container\Container...,可以将数据以对象的形式封装使用,程序的编写将变得高效而且结构清晰 3.对于多个表而且表间存在不同的关系时,如果使用不好会严重影响程序的性能 4.创建命令:php artisan make:model

    11.9K20

    PHP面试题,面试必看!

    ’的概念,尝试使用‘对象’进行数据的使用,或者使用’db’方法进行数据库的操作,也提醒一下部分‘滥 用’’toArray’的开发者,’all’或’select’结果是对象的数组集合,是无法使用’toArray...); 类名和类文件名保持一致,并统一采用驼峰法命名(首字母大写) 函数 系统已经不依赖任何函数,只是对常用的操作封装提供了助手函数; 单字母函数废弃,默认系统加载助手函数,具体参考上一个章节‘助手函数...答:NoSQL = Not Only SQL ,反SQL运动,不仅仅只有SQL才能存储数据,NoSQL运用非关系型的数据存储的。他不是谁开发的,而是一种存储模式,一个革命。...在分布式和以及大型文件存储方面具有传统关系型数据库无法比拟的优势。 什么是Cookie,什么是Session?...— 产生一个可存储的的表示,返回为字符串,此字符串包含了表示 value 的字节流,不丢失其类型和结构,可以存储于任何地方。

    2K20

    通过 Laravel Eloquent 模型实现简单增删改查操作

    ,简单来说,它会构建类与数据表之间的映射关系,从而建立起一个可在编程语言里使用的「虚拟对象数据库」。...模型类定义 使用模型类之前,需要在数据库有对应的数据表,因为模型类就是数据表在面向对象编程语言中的映射。...表名 Eloquent 约定模型类映射表名是将类名由驼峰格式转化为小写+下划线(含多个单词的话),最后将其转化为复数形式,比如 Post 对应表名是 posts、PostTag 对应表名是 post_tags...$max = User::whereNotNull('email_verified_at')->max('id'); # 最大 你会发现,如果你掌握了查询构建器,就等同于掌握了 Laravel...我们先要创建一个新的 Post 模型实例,然后依次设置需要设置的字段,最后调用 save 方法保存即可。

    8K20

    Laravel 参数验证的疑与惑

    否则调用魔术方法__call查找扩展验证函数。扩展函数返回布尔,返回true则表示验证通过,返回false表示验证失败。...使用自定义验证类,相对于extend方法扩展有一个很大的bug就是无法在自定义类中获取到当期的验证器对象。...从而导致在当前扩展的验证规则中,只能过获取到需要验证的数据,而获取不到其他的字段数据,无法进行联合字段的验证。像上面比较两个字段的大小的验证规则就无法实现。...像Yii2中,因为基本上所有的对象都有验证方法,所以很容易用当期类方法作为验证规则验证函数。...可以获取到验证器本身,因此可以做多个字段关系的验证;另一种是通过自定义规则类实现。自定义规则了只对使用自定义规则类的验证有效。但是自定义规则类本身无法直接获取到验证器本身,不能够做多个字段关系的验证。

    3.4K00

    结合 Bootstrap + Vue 组件实现 Laravel 异步分页功能

    在日常开发中,对数据库查询结果进行分页也是一个非常常见的需求,我们可以基于之前介绍的查询方法和前端 HTML 视图实现分页功能,不过从 Laravel 5.3 开始,Laravel 框架就已经为我们提供了非常完整的分页解决方案...不管你使用查询构建器还是 Eloquent 模型类,都可以在一分钟内完成分页功能,Laravel 还为我们提供了丰富的自定义支持,不管是后端的分页器,前端的分页链接,还是整个分页视图,都可以按需进行定制化开发...关于如何使用 Laravel 自带的分页功能进行分页,可以参考官方文档中的分页章节,说的非常清楚,在这篇教程中我们就不再一一演示了,不过 Laravel 自带的分页器实现的分页链接是动态 URL,不利于...除此之外,还要在 PostController 控制器中定义一个 fetch 方法用于异步获取分页数据: public function fetch() { // 每页显示6篇文章,如果页码太多...使用prop传递属性 我们在父视图中声明组件的时候传递了一个属性 page-type 到组件,用于标识该组件应用的页面类型,然后在组件中,我们可以通过 props 声明从父视图/组件中传递进来的属性(转化为驼峰格式

    7.4K20

    关于Laravel参数验证的一些疑与惑

    否则调用魔术方法__call查找扩展验证函数。扩展函数返回布尔,返回true则表示验证通过,返回false表示验证失败。...使用自定义验证类,相对于extend方法扩展有一个很大的bug就是无法在自定义类中获取到当期的验证器对象。...从而导致在当前扩展的验证规则中,只能过获取到需要验证的数据,而获取不到其他的字段数据,无法进行联合字段的验证。像上面比较两个字段的大小的验证规则就无法实现。...像Yii2中,因为基本上所有的对象都有验证方法,所以很容易用当期类方法作为验证规则验证函数。...可以获取到验证器本身,因此可以做多个字段关系的验证;另一种是通过自定义规则类实现。自定义规则了只对使用自定义规则类的验证有效。但是自定义规则类本身无法直接获取到验证器本身,不能够做多个字段关系的验证。

    6.6K31
    领券