Начиная с $request->has('completed')
, request()->has()
проверяет наличие ключа в данных request()
.
Он не проверяет значение, поэтому значение request()->get('completed')
может быть null
или может иметь значение, но в этом случае $request->has('completed')
возвращает только то, присутствует ли ключ и не имеет отношения к значение.
На public function completed($completed = true)
, очевидно, значение $completed
будет boolean
ответом request()->has('completed')
.
Затем вы должны понимать, что compact('completed')
преобразует переменную $completed
в массив ['completed'=>true]
или ['completed'=> false]
.
Допустим, вы передали 3 переменные $foo = apple
, $bar = banana
, $baz = carrot
, в compact('foo','bar','baz')
он превратит каждую переменную и их значения в ассоциативный массив, например ['foo' => 'apple', 'bar'=>'banana','baz'=>'carrot']
Учитывая вышеизложенное, $this->update(compact('completed'));
по сути точно такой же, как $this->update(['completed'=>$completed]);