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

Laravel 5.2 whereHas列不明确

Laravel是一款流行的PHP开发框架,其中的whereHas方法用于在查询中添加关联模型的约束条件。在Laravel 5.2版本中,whereHas方法需要指定关联模型的具体列名,否则会报错"列不明确"。

具体来说,whereHas方法用于在查询中筛选具有指定关联模型的记录。它接受两个参数:关联关系的名称和一个闭包函数,闭包函数用于添加关联模型的约束条件。

例如,假设我们有两个模型:User和Post,它们之间存在一对多的关联关系,一个用户可以拥有多篇文章。我们想要查询所有拥有至少一篇文章的用户,可以使用whereHas方法进行筛选:

代码语言:txt
复制
$users = User::whereHas('posts', function ($query) {
    $query->where('published', true);
})->get();

上述代码中,whereHas方法的第一个参数是关联关系的名称'posts',第二个参数是一个闭包函数,用于添加约束条件,这里我们筛选出已发布的文章。

在Laravel 5.2版本中,如果我们在闭包函数中使用了关联模型的列,需要明确指定列名,否则会报错"列不明确"。例如,如果我们想要筛选出用户的文章标题包含关键字"laravel"的记录,可以使用以下代码:

代码语言:txt
复制
$users = User::whereHas('posts', function ($query) {
    $query->where('title', 'like', '%laravel%');
})->get();

需要注意的是,这里的'posts'是关联关系的名称,'title'是关联模型Post的列名。

总结一下,Laravel 5.2中的whereHas方法用于在查询中添加关联模型的约束条件。在使用该方法时,需要明确指定关联模型的列名,以避免"列不明确"的错误。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送、移动分析、移动测试等):https://cloud.tencent.com/product/mobile
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链(BCS):https://cloud.tencent.com/product/bcs
  • 元宇宙(Tencent Real-Time 3D):https://cloud.tencent.com/product/trtc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

laravel ORM关联关系中的 with和whereHas用法

返回的每个用户信息中都会多一个posts数组,但是posts数组可能为空(不符合查询要求),没有筛选功能 with 更像 sql 中的 join,就是你存不存都有执行,存在结果不为空,存在关联结果,不存在结果为空,关联结果为空 whereHas...查询存在的关联关系,还有对应的 whereDoesntHave ,查询不存在的关联关系,像下面这样: // 获取发布文章标题中有first的用户 $users= User::whereHas('posts...function ($query) { $query- where('title', 'like', '%first%'); })- get(); 结果会查找发布过文章标题包含first的部分用户,有筛选功能 whereHas...就像用户发文章, user 存在关联关系 post,如果是 user- with(‘post’),你会得到所有用户和用户发布的文章信息,没发文章的用户就没有文章信息,如果是 user- whereHas...这就是我对 with 和 whereHas 的一些理解了 以上这篇laravel ORM关联关系中的 with和whereHas用法就是小编分享给大家的全部内容了,希望能给大家一个参考。

4K31
  • Laravel5.2之Validator

    引言: Laravel提供了Validator模块,可解决表单提交验证等一些需求,并且可以在视图View中显示错误验证信息,交互还是很友好的。注明:作者水平有限,有错误或建议请指正,轻拍。...概述: Laravel中在Controller.php文件中引用了trait为ValidatesRequests,这个trait源码在/Illuminate/Foundation/Validation/...可由php artisan make:controller PHPTestController这个Laravel自带的artisan命令来创建。...4、写显示验证错误信息视图 在laravel中,laravel会在每次请求把errors变量刷到session中,和视图模板绑定,所以errors变量在视图模板中可用,官方文档原话:"So, it is...@postValidator'); }); (二)、验证数组形式表单 有时候在写表单时,需要同时输入相类似的表单输入时,可以把这些input作为数组看待,laravel5.2也提供了数组形式的验证

    13.3K31

    Laravel5.2之PHP重载(overloading)

    说明:本文主要讲述PHP中重载概念,由于Laravel框架中经常使用这块知识点,并且PHP的重载概念又与其他OOP语言如JAVA中重载概念不一样,故复习并记录相关知识点。...重载(overloading) 在Laravel中就大量应用了重载相关知识,如在IlluminateSupportFacadesFacade中就用到了方法重载知识:使用魔术方法__callStatic(...Laravel中方法重载使用 在使用Laravel的Facade这种模式时,是通过Facade帮我们代理从容器Container中取出所需要的服务Service,就不需要通过$app['config']...总结:基本学习了PHP的重载知识后,对使用Laravel的Facade这个方式来获取服务时有了更深入的了解。...总之,多多使用Laravel来做一些东西和多多学习Laravel源码并模仿之,也是一件有趣的事情。

    3.1K31

    Laravel5.2之模型关联预加载

    说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...开发环境:Laravel5.1+MAMP+PHP7+MySQL5.5 先写个店铺列表页 1.先装上开发插件三件套(具体可参考:Laravel5.2之Seeder填充数据小技巧) 不管咋样,先装上开发插件三件套...: composer require barryvdh/laravel-debugbar --dev composer require barryvdh/laravel-ide-helper --dev...composer require mpociot/laravel-test-factory-helper --dev //config/app.php /** *Develop Plugin */...generate php artisan ide-helper:models php artisan test-factory-helper:generate 表的关系如图: 然后写Seeder,可以参考Laravel5.2

    2.6K41

    Laravel 5.2 文档 数据库 —— 起步介绍

    1、简介 Laravel 让连接多种数据库以及对数据库进行查询变得非常简单,不论使用原生 SQL、还是查询构建器,还是 Eloquent ORM。...目前,Laravel 支持四种类型的数据库系统: MySQL Postgres SQLite SQL Server 配置 Laravel 让连接数据库和运行查询都变得非常简单。...默认情况下,Laravel 示例环境配置已经为 Laravel Homestead 做好了设置,当然,你也可以按照需要为本地的数据库修改该配置。...读/写连接 有时候你希望使用一个数据库连接做查询,另一个数据库连接做插入、更新和删除,Laravel 使得这件事情轻而易举,不管你用的是原生 SQL,还是查询构建器,还是 Eloquent ORM,合适的连接总是会被使用...5.2 文档 数据库 —— 起步介绍就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.2K71

    基于Laravel 5.2 regex验证的正确写法

    Laravel 5.2的验证规则 在官方文档里面虽然已经介绍的很详细了, 但是regex的具体写法 文档里面没有示例 也没有直白的告诉我们如何去写, 本人原来的写法和网上看到的一样,网上的写法多数如下,...估计很多使用laravel验证规则的程序员也没有深究过,以为这种写法是对的, ?...而laravel文档里面又明确的告诉我们 使用regex模式时,规则必须放在数组中, 最近在查找laravel资料时发现一个外国小哥的正确写法,应该是下面这个样子, ?...这才是laravel regex 正确的写法,所以以前没有注意到的童鞋,修正一下吧~ 以上这篇基于Laravel 5.2 regex验证的正确写法就是小编分享给大家的全部内容了,希望能给大家一个参考。

    1.2K41

    Laravel5.2之Filesystem源码解析(下)

    2016-09-09/daily/file.txt是相对于存储bucket的相对路径(bucket在AWS S3中称为桶的意思,就是可以定义多个bucket,不同的bucket存各自的文件,互不干扰,在Laravel...配置S3时得指定是哪个bucket,这里假设file.txt存储在laravel bucket中),尽管其实际路径为类似这样的:https://s3.amazonaws.com/laravel/2016...Decorator Pattern也是Laravel中实现Middleware的一个重要技术手段,以后应该还会聊到这个技术。...在Laravel中AppServiceProvider中使用Storage::extend(name, Closure callback)注册一个自定义的filesystem。...总结:本文主要通过Laravel的Filesystem模块学习了\League\Flysystem的源码,并聊了该package的设计架构和设计技术,以后在使用中就能够知道它的内部流程,不至于黑箱使用。

    1.6K41

    Laravel5.2之Model Observer模型观察者

    说明:本文主要学习下Laravel的Model Observer模型观察者,把一点点经验分享出来希望对别人能有帮助。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...备注:上一篇文章:Laravel5.2之Redis保存页面浏览量,在开发的时候有个逻辑有点在意:那篇文章再用Redis保存浏览量后,当浏览量达到设置的次数后刷到MySQL里,同时把Redis里该浏览量键抹掉...前缀,因为Cache::remember会自动在每一个key前加上laravel前缀,可以看cache.php中这个字段:'prefix' => 'laravel'...//使用Model Observer后注销这句 // Redis::command('DEL', ['laravel:post:cache:'....总结:本篇文章主要学了下Laravel的Model Observer模型观察者,发现这个功能也能使代码结构更清晰,觉得挺好的。最近一直在瞎研究,有遇到好玩的再分享出来吧。

    1.7K21

    Laravel5.2之Seeder填充数据小技巧

    说明:本文主要聊一聊Laravel测试数据填充器Seeder的小技巧,同时介绍下Laravel开发插件三件套,这三个插件挺好用哦。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...开发环境:Laravel5.2 + MAMP + PHP7 + MySQL5.5 开发插件三件套 在先聊测试数据填充器seeder之前,先装上开发插件三件套,开发神器。先不管这能干些啥,装上再说。...1、barryvdh/laravel-debugbar composer require barryvdh/laravel-debugbar --dev 2、barryvdh/laravel-ide-helper...composer require barryvdh/laravel-ide-helper --dev 3、mpociot/laravel-test-factory-helper composer require...分享下最近发现的一张好图和一篇极赞的文章: 文章链接:Laravel的中大型專案架構

    3.5K42
    领券