laravel - 如何在 laravel 查询生成器中,为父表中的每条记录获取满足特定条件的子行数?
问题描述
我有一个users
表和一个messages
存储用户相互发送消息的表。用户表:
-------------------
|id|name |lastName|
|------------------|
|1 |emma |watson |
|2 |taylor|swift |
|3 |tiger |woods |
按摩台:
|id|messageBody|from_id|to_id|isRead|
|-----------------------------------|
|1 |... |1 |2 |0 |
|2 |... |2 |3 |1 |
|3 |... |1 |3 |0 |
我寻求的是获取所有用户的列表和他们发送给当前用户的未读消息的数量,在 laravel 中通过 auth()->user() 到达。我意识到对此的 sql 查询是这样的:
SELECT users.id,users.name,users.lastName,(select count(*)
from messages where messages.from_id = users.id and messages.to_id =1 and
messages.isRead = 0) as countOfNewMessages FROM users
但是我怎样才能用 laravel 的查询生成器达到这个结果呢?
解决方案
经典的方法是
// messages
$messages = Messages::where('isRead',0)->where('to_id',auth()->user()->id)->get();
//count of messages
$count = $messages->count();
但您也可以relations
用来获取用户的消息及其计数。请关注Laravel:关系
推荐阅读
- scala - 如何使用 Sbt 减少我的 scala 项目的内存堆?
- linux - 使用 Nginx 时,Jenkins UI 不显示配置更改
- javascript - 使用目标重定向
- d3.js - D3 在 v6 中拖放并单击分组对象
- c - 修改 LLVM 位码的指针大小
- c++ - 标量初始化程序中的 C++ 多余元素
- next.js - 在 NextJS 中使用 Snowflake 无法连接或执行 getStaticPaths/getStaticProps 中的查询
- python - 标记大量配对训练数据
- sql-server - 如何在 MSSMS 中恢复我的 SQL Server 数据库?
- entity-framework - SaveChanges 回滚 DbContextTransaction 后重置 EF DBContext