首页 Order Laravel 正文

Laravel 模型的关联查询

金鹏头像 金鹏 Laravel 2022-04-01 13:04:36 0 305
导读:一.关联查询1.了解了三种基础的关联模型,并简单的进行查询;2.我们详细的了解更多的查询方案;//下面两种查询是一样的;$books =User ::fi...
.关联查询

1. 了解了三种基础的关联模型,并简单的进行查询;

2. 我们详细的了解更多的查询方案;

//下面两种查询是一样的

$books = User ::find(19)->book;

$books = User ::find(19)->book()->get();

 

//可以采用 where 筛选或闭

$books = User ::find(19)->book()

->where( 'id ', 1)->orWhere( 'id ', 11)->get();

 

$books = User ::find(10)->book()->where(function ($query) {

$query->where( 'id ', 1)->orWhere( 'id ', 11);

})->get();

 

3. 使用 has()方法,可以查询某些条件下的关联查询数据;

//获取存在关联书籍的用户列表(言下之意:至少一本书)

$users = User ::has( 'book ')->get();

return $users;

 

//取存在关联书籍(并超过 3 )的用户列表

$users = User ::has( 'book ', '>= ', 3)->get();

return $users;

 

4. 使用 whereHas()方法,创建闭包查询;

//whereHas 闭包用法

$users = User ::whereHas( 'book ', function ($query) {

//$query  book 表,通过 user_id 查询,返回 user 表数据

$query->where( 'user_id ', 19);

})->get();

return $users;

 

5. 使用 doesntHave()方法,即 has()的反向操作;

//获取不存在关联书籍的用户列表 ,闭包用法:whereDoesntHave()

$users = User ::doesntHave( 'book ')->get();

return $users;


6. 使用 withCount()方法,可以进行关联统计

//关联统计,会自动给一个 book_count 字段

//统计每个用户有多少本书

$users = User ::withCount( 'book ')->get();

return $users;

 

//给多个关系添加统计 profile_countbook_count

$users = User ::withCount([ 'profile ', 'book '])->get();

return $users;

 

//关联统计再结合闭包进行筛选,还可以设置别名

$users = User ::withCount([ 'profile ', 'book ' => function ($query) {

//这里限制被统计的记录

$query->where( 'user_id ', 19);

}])->get();

                   return $users;


本文地址:https://www.jinpeng.work/?id=173
若非特殊说明,文章均属本站原创,转载请注明原链接。
广告3

欢迎 发表评论:

  • 请填写验证码

日历

«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930

控制面板

您好,欢迎到访网站!
  查看权限
广告2

退出请按Esc键