首页 > 解决方案 > 如何在 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();

如何在第二个查询中获取该变量。

在此先感谢任何帮助将不胜感激。

标签: mysqllaravel

解决方案


更有效的方法:

$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();
    }
}

推荐阅读