求laravel一对一 一对多 原生查询语句
本文介绍了求laravel一对一 一对多 原生查询语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
Route::get('test', function () {
DB::connection()->enableQueryLog();
// 获取已执行的查询数组
Users::with('posts')->get();
dd(DB::getQueryLog());
});
array:2 [▼
0 => array:3 [▼
"query" => "select * from `users`"
"bindings" => []
"time" => 2.76
]
1 => array:3 [▼
"query" => "select * from `posts` where `posts`.`users_id` in (?, ?)"
"bindings" => array:2 [▶]
"time" => 0.71
]
]
上述代码中 为什么不是select id from user 然后把这个查询结果用于下一步的in中 ,
解决方案
`select * from users` 可以获得users的所有数据
`select * from `posts` where `posts`.`users_id` in (?, ?)`
可以把上一条语句的id放入in()获得posts表里users_id匹配的数据,接下来就可以用php来拼接数据,这样只要两条sql。
如果用select * from `posts` where `posts`.`users_id` in(select id from user)那么使用了自查询不说,而且users表的字段要怎么查询?
以上,个人理解,欢迎打脸!
这篇关于求laravel一对一 一对多 原生查询语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文