File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Module.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Module extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
protected $fillable = ['id', 'name', 'icon', 'route', 'order'];
public function modules()
{
return $this->hasMany(Module::class)->select('id', 'name', 'icon', 'route', 'order', 'module_id', 'active')
->with('modules')
->where([['active', true]])
->orderBy('order', 'ASC');
}
public function modulesTree($data = null, $childs = null, $module = null)
{
if (!$data)
$data = [];
if ($module) {
$modulesChild = Module::select('id', 'name')
->where([['active', true], ['module_id', $module]])
->orderBy('order')
->get();
if (count($modulesChild)) {
foreach ($modulesChild as $child) {
$childObject = new \stdClass();
$childObject->id = $child->id;
$childObject->text = $child->name;
$nodes = $this->modulesTree($data, [], $child->id);
if (count($nodes)) {
$childObject->nodes = $nodes;
}
$childs[] = $childObject;
}
return $childs;
} else {
return [];
}
} else {
$modules = Module::select('id', 'name')
->where('active', true)
->whereNull('module_id')
->orderBy('order')
->get();
foreach ($modules as $item) {
$object = new \stdClass();
$object->id = $item->id;
$object->text = $item->name;
$object->nodes = $this->modulesTree($data, [], $item->id);
$data[] = $object;
}
}
return $data;
}
public function modulesTreeId($data = null, $module = null)
{
if (!$data)
$data = [];
if ($module) {
$data[] = $module;
$modulesChild = Module::select('id')->where([['active', true], ['module_id', $module]])->get();
if (count($modulesChild)) {
foreach ($modulesChild as $child) {
$data = $this->modulesTreeId($data, $child->id);
}
}
}
return $data;
}
}