laravel foreach在视野中

问题描述 投票:0回答:1

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

  • 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中的所有文件夹

php mysql laravel
1个回答
0
投票

关系

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

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

通过这种方式,您将能够以下列方式检索子文件夹的集合

$folder->subfolders

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

循环和视图

在您的控制器中,检索文件夹列表的那个,您必须添加“subfolder = 0”之类的地方,以便只检索主级文件夹。

那你对自己的所作所为很满意。

<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>

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

© www.soinside.com 2019 - 2024. All rights reserved.