laravel - 将 SQL 转换为 Laravel Eloquent
问题描述
我有这个 SQL 查询:
SELECT
m1.id
FROM
messages m1
WHERE
m1.to_id = 1 AND m1.created_at < (
SELECT
m2.created_at
FROM
messages m2
WHERE
m2.from_id = m1.to_id AND m2.to_id = m1.from_id)
GROUP BY
m1.id
我怎样才能转换成雄辩的?直到现在我都这样做了,但是在子查询的 where 部分不知道该怎么做。
Message::where('to_id', 1)
->where('created_at', '<', function($q) {
$q->from('messages');
$q->select('created_at');
})
->select('id')
->groupBy('id')
->get();
解决方案
你可以试试这个:
Message::where('to_id', 1)
->where('created_at', '<', function($q) {
$q->from('messages AS m2')
->select('created_at')
->where('m2.from_id ','=', 'messages.to_id ')
->where('m2.to_id','=','messages.from_id');
})
->select('id')
->groupBy('id')
->get();
推荐阅读
- excel - 使 SheetSelectionChange 在不同的工作簿上运行
- javascript - 如何在javascript中用分号和双引号声明带有csv内容的变量
- firebase-test-lab - 录制的机器人测试无法执行任何操作
- reactjs - Redux 在递归 React.Component 中连接
- flutter - 从 Cloud FireStore 获取字符串类型的数据
- python-3.x - sqlite3.OperationalError:无法打开数据库文件 - 一段时间后发生错误
- sql-server - SQL Server 排序规则——最接近 utf-8?
- php - 我应该使用哪个 SQL 请求?
- javascript - 无法将选项值放入隐藏字段
- java - Google Analytics API - 最近失败的报告 API 请求数过多