laravel foreach在视野中

时间:2017-12-26 20:12:23

标签: php mysql laravel

我有一个名为文件夹的表格,我有以下属性:

  • id_folder
  • 名称
  • sub_dossier_id (非外键)
  • id_folder:1
  • name:folder1
  • sub_dossier_id:1

当id_folder = sub_dossier_id ====>它是一个文件夹

  • id_folder:2
  • name:folder2
  • sub_dossier_id:2

当id_folder = sub_dossier_id ====>它是一个文件夹

  • id_folder:3
  • name:folder3
  • sub_dossier_id:1

当id_folder!= sub_dossier_id ====>它是一个子文件夹,她的文件夹父文件夹是folder1

  • id_folder:4
  • name:folder4
  • sub_dossier_id:2

当id_folder!= sub_dossier_id ====>它是一个子文件夹,她的文件夹是一个文件夹2

我在控制器中试过这个:

$sub_folders = Folder::whereRaw('id_folder!=sub_dossier_id')->get();
$folders = Folder::whereRaw('id_folder=sub_dossier_id')->get();
return view('/',['sub_folders'=>$sub_folders, 'folders'=>$folders]);

view.balde.php

@foreach($folders as $folder)  
    <ul>
        {{ $folder->id_folder }}

        @foreach($sub_folders as $sub_folder) 

            <li>{{ $sub_folder->sub_dossier_id }}</li>
        @endforeach
    </ul>
@endforeach

但是显示标签ul

中的所有文件夹

1 个答案:

答案 0 :(得分:0)

<强>关系

首先,您必须为文件夹模型分配关系。

public function subfolders() {
    return $this->hasMany('App\Folder', 'sub_dossier_id', 'folder_id');
}

通过这种方式,您可以通过以下方式检索子文件夹的集合

$folder->subfolders

为了简化您对Eloquent的工作,我建议您将ID命名为id,将子文件夹ID命名为folder_id

循环和查看

在你的控制器中,检索文件夹列表的那个,你必须添加一个像&#34; subfolder = 0&#34;为了只检索主级文件夹。

然后你对你的所作所为非常好。

<ul>
@foreach($folders as $folder)
    <li>{$folder->name}</li>
    @if($folder->subfolders)
      <ul>
        @foreach($folders as $folder)
            <li>{$folder->name}</li>
       @endforeach
       </ul>
    @endif
@endforeach
</ul>

我是用手机接听你的,写代码不太舒服......