在视图中显示不必要的行

时间:2019-04-03 20:17:48

标签: php mysql laravel

我正在显示用户可以参考的访问表。

我有一个这样的桌子

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 920,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "consideration": {
      "doc_count": 486,
      "gross": {
        "value": 4492767
      }
    }
  }
}

我要寻找的输出是这个

--------------------------------------------------------------
id  | header | module | submodule | add | edit | view | delete
--------------------------------------------------------------
 1  | users  | client |           | Y   | Y    | Y    | Y
 2  | users  | client | Active    | Y   | Y    | Y    | Y
 3  | users  | client | Inactive  | Y   | Y    | Y    | 
 4  | users  | client | Pending   | Y   | Y    |      | 

但是我得到的输出是这个

Header | Module | Submodule | Add | Edit | View | Delete
users  |        |           |     |      |      |
       | client |           | Y   | Y    | Y    | Y
       | client | Active    | Y   | Y    | Y    | Y
       | client | Inactive  | Y   | Y    | Y    | 
       | client | Pending   | Y   | Y    |      | 

如何删除不必要的字段?

这是我当前在控制器上的代码

Header | Module | Submodule | Add | Edit | View | Delete
users  |        |           |     |      |      |
       | client |           | Y   | Y    | Y    | Y
       | client | Active    | Y   | Y    | Y    | Y
       | client |           | Y   | Y    | Y    |
       | client | Inactive  | Y   | Y    | Y    |
       | client |           | Y   | Y    |      |
       | client | Pending   | Y   | Y    |      | 

然后在视图上

public function create() {
    $userGrid = DB::table('user_permissions_grid')
                   ->where('status', 'active')
                   ->orderBy('header', 'asc')
                   ->orderBy('module', 'asc')
                   ->orderBy('submodule', 'asc')
                   ->get();
}

如何将其显示为上面发布的所需输出?

1 个答案:

答案 0 :(得分:0)

查看您的代码,它会精确显示您的编码!

您首先显示的是仅显示标题的行,然后显示包含模块和权限的行,然后再查看该模块是否具有子模块,如果是,则再次打印同一行,这次丢失了模块,仅显示子模块。

因此,如果一行中有一个模块和一个子模块,您将获得两个相应的行。

我认为代码应类似于:

    @if($row->submodule)
    <tr>
        <td></td>
        <td>{{ $row->module }}</td>
        <td>{{ $row->submodule }}</td>
        <td>{{ $row->add }}</td>
        <td>{{ $row->edit }}</td>
        <td>{{ $row->view }}</td>
        <td>{{ $row->delete }}</td>
    </tr>
    @else
    <tr>
        <td></td>
        <td>{{ $row->module }}</td>
        <td></td>
        <td>{{ $row->add }}</td>
        <td>{{ $row->edit }}</td>
        <td>{{ $row->view }}</td>
        <td>{{ $row->delete }}</td>
    </tr>
    @endif