mysql - 如何在 laravel 中编写此查询
问题描述
我有两张桌子
1. menu
id - menu_name - menu_url
1 - Home - index
2 - About - about
3 - Services -
4 - Contact - contact
2. submenu
id - menu_name - submenu_name
1 - Services - Web Development
2 - Services - Web Designing
3 - Services - Logo Designing
4 - Services - SEO
为此,我在 php 中创建了这个查询
$query = mysqli_query($con,"SELECT * FROM menu");
while ($row = mysqli_fetch_assoc($query)){
if ($row['menu_url'] == ''){
$subquery = mysqli_query($con,"SELECT * FROM submenu WHERE
menu_name = '".$row['menu_name']."'");
while ($row1 = mysqli_fetch_assoc($subquery)){
//do something here
}
}else{
//do something here
}
}
我的问题是我如何在 laravel 中进行此查询?
我的控制器查询
$menu = menu::all();
$submenu = submenu::where('menu_name','i want the $menu->menu_name variable here')->get();
如何在第二个查询中获取该变量。
在此先感谢任何帮助将不胜感激。
解决方案
更有效的方法:
$all_sub_menu = Submenu::get();
$all_sub_menu = collect($all_sub_menu)->groupBy('menu_name');
foreach( $menu as $m ) // To get the individual records
{
if(isset($all_sub_menu[$m->menu_name]){
$sub_menu = $all_sub_menu[$m->menu_name];
// you will get submenu for the current menu without requesting the database again and again
}
else{
$sub_menu = array();
}
}
推荐阅读
- swift - 是否可以打印屏幕上呈现的 UI 内容 | 迅速
- java - AspectJ 环绕调用,包括方法调用后的方法体
- maven - 查找从 JCenter 下载了哪些 Maven 依赖项?
- usb - USB 或磁盘加密算法不依赖于操作系统
- python - 需要 telnet 中的登录功能?
- typescript - 如何解决“没有重载匹配此调用”。使用passport.serializeUser时出错?
- mysql - 如何理解 Mysql 中的这种锁定机制 [update A=x where A=y]
- html - 在 Bootstrap input-group-append 类中居中输入值和标签
- c++ - C++:如何在使用 getline() 的两个重载时重新定义它?
- spring - 无法覆盖 Spring 数据 r2dbc 中 AbstractR2dbcConfiguration 的 connectionFactory()(Spring boot 2.4.4)