laravel - 如何将 sql 转换为查询生成器 laravel
问题描述
谁能帮我将此 SQL 转换为查询生成器!
SELECT topwords.*,
mw.word AS my_word
FROM topwords
LEFT JOIN (SELECT DISTINCT words.word
FROM definition_word
JOIN words
ON words.id = definition_word.word_id
WHERE definition_word.user_id = $user) AS mw
ON topwords.word = mw.word
我对如何在 leftjoin 中使用子查询有疑问!
我试过这样的东西,但它有错误! 将错误视为图像
DB::table('topwords')
->leftJoin(DB::raw("SELECT DISTINCT
words.word
FROM definition_word
JOIN words ON words.id = definition_word.word_id
WHERE definition_word.user_id = $user as mw"),"topwords.word", "=", "mw.word" )
->select(
"topwords.*",
"mw.word AS my_word"
)->orderBy('id','desc')->paginate(15);
解决方案
由于分页和聚合,您有此错误
尝试使用 LengthAwarePaginator 进行自定义分页
这是示例:Laracast
所以你需要做这样的事情:
$query = DB::table('topwords')
->leftJoin(DB::raw("SELECT DISTINCT
words.word
FROM definition_word
JOIN words ON words.id = definition_word.word_id
WHERE definition_word.user_id = $user as mw"),"topwords.word", "=", "mw.word" )
->select(
"topwords.*",
"mw.word AS my_word"
);
$paginator = new LengthAwarePaginator($query->get(), $query->count(), $request->input('per_page', 15), $request->input('page', 1));
然后你可以在集合中使用它
推荐阅读
- c - C 中 switch() 的成本
- javascript - 使用 requestAnimationFrame 启动和停止在 Barba.js 中运行 three.js 的函数?
- xamarin - 此操作是否有事件名称?
- html - 窗口大小调整 - 网站的大小调整得比其他网站小
- html - Bootstrap 4 dropdown button doesn't drop
- android - 错误的第一个参数类型:发现需要类 X 'androidx.fragment.app.FragmentActivity'
- slack-api - 如何确定通过交互式消息向用户提示了哪个问题?
- excel - 将一个单元格与工作簿中的单元格区域进行比较,并将结果设置为另一个单元格区域
- css - 网格高度问题
- rest - REST API GET 不返回任何内容的正确响应状态是什么?