[ 'label' => trans('Nom'), 'type' => CrudType::string(), 'validate' => [ 'string', 'max:255' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::viewAny(), CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'status' => [ 'label' => trans('État'), 'type' => CrudType::string(), 'validate' => [ 'string', 'max:255' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::viewAny(), CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'description' => [ 'label' => trans('Description'), 'type' => CrudType::text(), 'validate' => [ 'string' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'todo' => [ 'label' => trans('À Faire'), 'type' => CrudType::text(), 'validate' => [ 'string' ], 'required' => false, 'nullable' => true, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'sites' => [ 'label' => trans('Sites'), 'type' => CrudType::belongsToMany(), 'belongsToMany' => Site::class, 'belongsToManyLabel' => 'name', 'nullable' => true, 'readonly' => function () { /** @var \App\Models\User */ $user = auth()->user(); return !$user->isAdmin(); }, 'actions' => [ CrudAction::viewAny(), CrudAction::view(), CrudAction::create(), ] ] ]; parent::__construct($attributes); } protected static function booted() { static::updated(function (Project $project) { event(new ProjectUpdated($project, \auth()->user())); }); } public function sites() { return $this->belongsToMany(Site::class, 'project_site'); } public function logs() { return $this->morphMany(Log::class, 'parent'); } public function files() { return $this->morphMany(File::class, 'parent'); } }