FleetCart/Modules/Menu/Entities/Menu.php
2023-12-03 14:07:47 +00:00

83 lines
1.6 KiB
PHP

<?php
namespace Modules\Menu\Entities;
use Modules\Admin\Ui\AdminTable;
use Illuminate\Http\JsonResponse;
use Modules\Support\Eloquent\Model;
use Modules\Support\Eloquent\Translatable;
class Menu extends Model
{
use Translatable;
/**
* The relations to eager load on every query.
*
* @var array
*/
protected $with = ['translations'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['is_active'];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'is_active' => 'boolean',
];
/**
* The attributes that are translatable.
*
* @var array
*/
protected $translatedAttributes = ['name'];
public static function for($menuId)
{
return static::findOrNew($menuId)
->menuItems()
->with(['category', 'page', 'files'])
->get()
->noCleaning()
->nest();
}
/**
* Perform any actions required after the model boots.
*
* @return void
*/
protected static function booted()
{
static::addActiveGlobalScope();
}
public function menuItems()
{
return $this->hasMany(MenuItem::class)->orderByRaw('-position DESC');
}
/**
* Get table data for the resource
*
* @return JsonResponse
*/
public function table()
{
return new AdminTable($this->newQuery()->withoutGlobalScope('active'));
}
}