2016-08-07 4 views
2

어떤 이유로 양식의 확인란을 사용하고 있는데, 확인란의 상태 값을 저장할 수 없습니다 (선택 또는 선택 취소).Laravel 5 양식 모델 바인딩 확인란 값

양식 모델 바인딩을 사용하고 있습니다.

나의 양식은 다음과 같습니다

{!! Form::model($profile, ['method' => 'PATCH', 'action' => ['[email protected]', $profile->id]]) !!} 

<div class="form-group"> 
    {!! Form::label('wifi', 'Wifi') !!} 
    {!! Form::checkbox('wifi','yes', $profile->wifi) !!}Wifi 
</div> 

{!! Form::close() !!} 

내 스키마 : 내가 잘못 뭐하는 거지

$table->boolean('wifi')->nullable(); 

그러나 나는 또한 내가 알아낼 수 없습니다

정수와 그것을 시도

답변

3

해야 추측이 코드 조각

{!! Form::checkbox('wifi','yes', $profile->wifi) !!}Wifi 

하는 생성 귀하 이

<input checked="checked" name="wifi" type="checkbox" value="yes"> 

즉, 값 yes을 서버로 보내고 있지만 열 데이터 유형이 varchar/text가 아님을 의미합니다. 부울로 설정합니다.

form model binding을 사용하고 있으므로 코드를 업데이트하면 laravel이이를 수행합니다.

{!! Form::checkbox('wifi') !!} Wifi 

또한fillablecasts 배열에 wifi 키를 포함한다. 같은

protected $fillable = [ ..., 'wifi' ]; 

protected $casts = [ 'wifi' => 'boolean' ]; 

참고 : 스키마 코드

$table->boolean('wifi')->nullable; 

nullable는 함수, 속성이 아닙니다. 그래서 그뿐만 아니라 데이터베이스를 refersh 마이그레이션

php artisan migrate:refresh 
+0

안녕하세요 Zayn, 고마워요. 당신의 예제를 사용하고 nullable()로 업데이트했습니다. 여전히 상태가 DB – Mamulasa

+0

에 저장되지 않았습니다. 'php artisan migrate : refresh'를 시도 했습니까? –

+0

예 마이 그 레이션을 새로 고쳤습니다. – Mamulasa

0

이 데이터를 어떻게 유지하려고하는지에 따라 다릅니다.

당신이 save() 방법을 사용하는 경우는, 같은 것을 할 :

$model->wifi = isset($request->wifi); 

PS를 : 나는 ->nullable()

+0

안녕 알렉세이 후

$table->boolean('wifi')->nullable(); 

그것을 업데이트, 내가 사용하고 있습니다 : 공공 기능 업데이트 (ProfileRequest $ 요청, $ 아이디) { $ 프로파일 = 프로필 : : findOrFail ($ id); $ profile-> update ($ request-> all()); return redirect ('backend/profile'); } – Mamulasa

+0

그런 다음 $ profile-> update ($ request-> all());의 직전에'$ request-> wifi = isset ($ request-> wifi); 또한, 귀하의 경우에는 '프로파일'모델의'$ fillable' 배열에'wifi'가 있어야합니다. –

+0

좋아요, wifi가 채워진 배열에 있고 컨트롤러를 업데이트했습니다. public function update (ProfileRequest $ request, $ id) { $ profile = Profile :: findOrFail ($ id); $ request-> wifi = isset ($ request-> wifi); $ profile-> update ($ request-> all()); return redirect ('backend/profile'); }하지만 여전히 똑같습니다 : ( – Mamulasa