Я прошел довольно много уроков, и я начинаю добираться туда с Laravel, однако, одна вещь, которую я как-то упустил в этих уроках / которую не удалось обнаружить, это как выполнить «выборочное обновление», извините, если это неправильная формулировка, однако это моя проблема.
У меня есть модель user , она содержит несколько настраиваемых полей поверх полей авторизации, добавленных Laravel, настраиваемые поля:
- ConsiderForAccommodation
- Посещение
В настоящее время у меня есть форма в представлении, которая позволяет пользователю выбирать, будут ли они рассматриваться для размещения, это работает следующим образом:
Модель пользователя
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'considerForAccommodation'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
Контроллер пользователя
public function update(Request $request)
{
// Update the given user
$user = auth()->user();
// If the value is null then it's false.
$user->ConsiderForAccommodation = $request->input('ConsiderForAccommodation') != null;
$user->save();
return redirect('/accommodation');
}
Размещение Просмотр (форма)
@section('content')
<h1>Accomodation</h1>
<p>This is the accomodation page.</p>
{!! Form::open(['action' => ['UserController@update', Auth::id()], 'method' => 'POST']) !!}
<div class="form-group">
{{Form::label('ConsiderForAccommodation', 'Consider Me For Accommodation')}}
{{Form::checkbox('ConsiderForAccommodation', null, Auth::user()->ConsiderForAccommodation)}}
</div>
{!! Form::token() !!}
{{Form::hidden('_method', 'PUT')}}
{{Form::submit('Submit', ['class' => 'btn btn-primary'])}}
{!! Form::close() !!}
@endsection
Маршрут
Route::get('/', 'PagesController@index');
Route::get('/accommodation', 'PagesController@accommodation');
Route::get('/registry', 'PagesController@registry');
Route::get('/rsvp', 'PagesController@rsvp');
Route::get('/schedule', 'PagesController@schedule');
Route::get('/travel', 'PagesController@travel');
Route::resource('user', 'UserController');
Auth::routes();
Как я уже говорил, эта реализация работает как задумано. Теперь проблема в том, что у меня есть другая отдельная форма (в другом представлении), которую я хотел бы содержать в форме, которая only обновляет значение «Attending» для модели. Как мне справиться с этим в Laravel?
Нужно ли создавать отдельный контроллер для каждого свойства, которое я хочу отдельно обновлять от других, или я полностью смотрю на это неправильно, и есть простой способ сделать это?
Любая помощь будет оценена.