mysql - 如何在 laravel 中编写此查询

标签 mysql laravel

我有两张 table

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 中执行此查询?

我的 Controller 查询

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

关于mysql - 如何在 laravel 中编写此查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52811399/

相关文章:

mysql - 带有 MySQL 的 ASP.NET MVC 4 EF5

php - Laravel 5.4 密码重置

database - 每个表 Eloquent ,多个关系

php - 如何为 Laravel 发行和定制 .htaccess?

php - 路由模型绑定(bind)不起作用

php - MySQL 表日期更新给出 00/00/0000 12 :00:00 am format in table

javascript - phonegap连接mysql数据库的方法

mysql - 为什么 SQL 声明失败?

php - 通过 Codeigniter 更新数据库中的条目并且未获取以前的值

php - 在 Laravel 5.1 中上传多个图像