求laravel一对一 一对多 原生查询语句
仅有的幸福
仅有的幸福 2017-05-16 16:46:54
[PHP讨论组]

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中 ,

仅有的幸福
仅有的幸福

全部回复(1)
淡淡烟草味
`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表的字段要怎么查询?
以上,个人理解,欢迎打脸!
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号