Обновить значения, когда ноль - PullRequest
1 голос
/ 19 апреля 2019

У меня есть форма, которая отправляет значения в контроллер следующим образом:

public function postFormUpdate(ProjectUpdateRequest $request)
{
    $inputs = $request->all();
    $project = $this->projectRepository->update($inputs['project_id'],$inputs);
    //...
}

Репозиторий проекта выполняется следующим образом:

public function update($id, Array $inputs)
    {
        return $this->save($this->getById($id), $inputs);
    }

    private function save(Project $project, Array $inputs)
    { 
    // Nullable
    if (isset($inputs['project_type'])) {$project->project_type = $inputs['project_type'];}
    if (isset($inputs['activity_type'])) {$project->activity_type = $inputs['activity_type'];}
...
}

Моя проблема в том, еслиТип_проекта равен нулю в поле формы (тип проекта вводить не нужно или его можно удалить), тогда isset ($ input ['project_type']) будет ложным и обновление не будет запущено.

То, что я хочу, - это если пользователь настроил тип проекта, а затем хочет изменить его и установить его на ноль, например, он не работает.Я использую isset, потому что иногда я обновляю только одно поле, и я не хочу, чтобы это генерировало ошибку, потому что оно не было частью входных данных и не было установлено.

Что я могу сделать, это использовать:

if (isset($inputs['project_type']) || is_null($inputs['project_type'])) {$project->project_type = $inputs['project_type'];}

Но я смотрю, есть ли более элегантный способ сделать это.

Спасибо.

1 Ответ

0 голосов
/ 19 апреля 2019

Более элегантный способ - посмотреть, установлено ли что-нибудь под ключом.так что идите с array_key_exists

if ( array_key_exists('project_type', $inputs) ){$project->project_type = $inputs['project_type'];}

Вы можете увидеть это в действии здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...