站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

laravel中wherehas是干什么用的

时间:2022-06-08 [网络编程]作者:fabuyuan 浏览:4 次

laravel中,wherehas基于关联关系去过滤模型的查询结果,并且允许添加对这个模型的过滤条件,常用于过滤主表中有关从表的数据,语法为“User::whereHas('从表', function($...){$...->where(过滤条件);})->get()”。

本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。

laravel中wherehas

with()

with()方法是用作“渴求式加载”的,那主要意味着,laravel将会伴随着主要模型预加载出确切的的关联关系。这就对那些如果你想加在一个模型的所有关联关系非常有帮助。因为“渴求式加载”缓解了1+N的查询问题,仅需1+1次查询就能解决问题,对查询速度有了质的提升。

例如:

user > hasMany > post

$users = User::with('posts')->get();
foreach($users as $user){
    $users->posts; // posts已经被加载了,没有增加DB查询
}

has()

has()方法是基于关联关系去过滤模型的查询结果,所以它的作用和where条件非常相似。如果你只使用has(‘post’),这表示你只想得到这个模型,这个模型的至少存在一个post的关联关系。

例如:

user > hasMany > post

//User至少有一条post的关联关系
$users = User::has('post')->get();

你还可以使用”.“来构造嵌套has语句。

例如:

user > hasMany > post

$user = User::has('post.votes', ‘>’, '3')->get();

whereHas()

whereHas()方法的原理基本和has()方法相同,但是他允许你自己添加对这个模型的过滤条件。

例如:

user > hasMany > post

$users = User::whereHas('posts', function($q){
    $q->where('created_at', '>=', '2017-11-29');
})->get();

【相关推荐:laravel视频教程

以上就是laravel中wherehas是干什么用的的详细内容,更多请关注站长家园其它相关文章!

本文标签:  Laravel

转载请注明来源:laravel中wherehas是干什么用的

本文永久链接地址:https://www.adminjie.com/post/13238.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • html5草案是哪一年发布的

      html5草案是哪一年发布的

      html5草案是在2008年发布的。HTML5草案的前身是“WebApplications1.0”,是在2004年被“WHATWG”提出,直到2008年1月...

    • Vue3和Vue2的差异是什么?全方位对比一下!

      Vue3和Vue2的差异是什么?全方位对比一下!

      Vue3和Vue2的差异是什么?下面本篇文章给大家全方位对比Vue3与Vue2,聊聊Vue3与Vue2的区别,希望对大家有所帮助!从Vue3发布以来,我就一直对...

    • 浮动是css3的新特性吗

      浮动是css3的新特性吗

      浮动不是css3的新特性。定义元素在哪个方向浮动的float属性在css1时就已经可以使用了,css的浮动会使元素向左或向右移动,其周围的元素也会重新排列,一个...

    • translate是css3属性吗

      translate是css3属性吗

      translate是css3的一个新的css属性;translate属性用于定义元素的2d平移转换,该属性常与transform属性配合使用,transform...

    • 浅析Angular中的独立组件,看看怎么使用

      浅析Angular中的独立组件,看看怎么使用

      本篇文章带大家了解一下Angular中的独立组件,看看怎么在Angular中创建一个独立组件,怎么在独立组件中导入已有的模块,希望对大家有所帮助!Angular...

    热门文章