/**
  * Handle the options.
  *
  * @param UserFieldType $fieldType
  */
 public function handle(UserFieldType $fieldType)
 {
     $model = $fieldType->getRelatedModel();
     $query = $model->newQuery();
     $this->dispatch(new QueryWithRole($fieldType, $query));
     $this->dispatch(new QueryWithPermission($fieldType, $query));
     $fieldType->setOptions($query->get()->lists($model->getTitleName(), $model->getKeyName())->all());
 }
 /**
  * Restore the value.
  *
  * @param $value
  * @return null|EloquentModel
  */
 public function restore($value)
 {
     if (is_numeric($value)) {
         $relation = $this->fieldType->getRelatedModel();
         return $relation->find($value);
     }
     return $value;
 }
 /**
  * Handle the command.
  *
  * @param RoleRepositoryInterface $roles
  */
 public function handle(RoleRepositoryInterface $roles)
 {
     if (!$this->query->getQuery()->joins && ($permission = array_get($this->fieldType->getConfig(), 'permission'))) {
         $accessible = $roles->findByPermission($permission);
         if (!$accessible->isEmpty()) {
             $this->query->join('users_users_roles', 'users_users_roles.entry_id', '=', 'users_users.id')->whereIn('users_users_roles.related_id', $accessible->lists('id'));
         }
     }
 }
 /**
  * Handle the command.
  *
  * @param RoleRepositoryInterface $roles
  */
 public function handle(RoleRepositoryInterface $roles)
 {
     if ($role = array_get($this->fieldType->getConfig(), 'role')) {
         if (is_numeric($role)) {
             $role = $roles->find($role);
         }
         if (is_string($role)) {
             $role = $roles->findBySlug($role);
         }
         if ($role) {
             // The role exists so join and limit results to that role's ID.
             $this->query->join('users_users_roles', 'users_users_roles.entry_id', '=', 'users_users.id')->where('users_users_roles.related_id', $role->getId());
         } else {
             // The role doesn't exist so don't return anything.
             $this->query->join('users_users_roles', 'users_users_roles.entry_id', '=', 'users_users.id')->where('users_users_roles.related_id', false);
         }
     }
 }
 /**
  * Handle the command.
  *
  * @param Container $container
  */
 public function handle(Container $container)
 {
     $container->call(array_get($this->fieldType->getConfig(), 'handler'), ['fieldType' => $this->fieldType]);
 }