【问题标题】:How to display departments as nodes in Laravel如何在 Laravel 中将部门显示为节点
【发布时间】:2020-02-17 15:49:55
【问题描述】:

我有一个我 db 'departments' 的表。我希望它用 jstree 显示它。我有一个 parent_id,根节点为 0,另一个为 1。我在父节点和子节点中显示它们时遇到问题关系..这是我的代码和我尝试过的,但问题是它显示如下:

 - IT Department
     - IT Department
 - IT Department
     - IT Department

我想要这样的

 - IT Department
     - Research and development
 - Finance
     - Product development

    <ul>
    if({{ $department->parent_id }} == 0)
    {

      <li>{{ $department->name }}
        <ul>
          <li id="child_node_1">{{ $department->id }}</li>
          <li >{{ $department->name }}</li>
        </ul>
      </li>    
    }
    if({{ $department->parent_id }} == 1)
    {
      <li>{{ $department->name }}
      <ul>
          <li id="child_node_2">{{ $department->id }}</li>
          <li >{{ $department->name }}</li>
        </ul>
      </li>
    }

    </ul>

【问题讨论】:

    标签: php jquery laravel jstree


    【解决方案1】:

    听起来您可能想使用 laravel 的 ORM 创建一个自引用关系。查看one to one relationship

    您完成的代码可能如下所示:

    Department.php

    class Department extends Eloquent {
    
        public function parents()
        {
            return $this->belongsTo('Department', 'parent_id');
        }
    
        public function children()
        {
            return $this->hasMany('Department', 'parent_id');
        }
    }
    

    department.blade.php

    <li>{{ $parent->name }}
        <ul>
        @foreach($department->parents as $parent)
            <li id="child_node_1">{{ $parent->id }}</li>
            <li>{{ $parent->name }}</li>
        @endforeach
        </ul>
    </li>
    

    【讨论】:

    • 这需要在迁移文件中为parent_id使用外键吗?
    • 这不是必需的,但可能是个好主意。看起来您可能希望将 nullable() 添加到约束中,因为您可能有没有父级的部门。 $table->integer('parent_id')->unsigned()->nullable(); $table->foreign('parent_id')->references('id')->on('departments')->onUpdate('cascade');
    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2018-07-29
    相关资源
    最近更新 更多