У меня есть свойство модели с именем 'boolean_property'. (Модель, приведенная ниже, является, конечно, примером. Моя реальная модель имеет гораздо больше свойств.)
<?php
class MyModel extends Model
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'boolean_property' => 'boolean',
];
}
Значение этого свойства определяется пользователем в форме с флажком.
<input type="checkbox" class="form-check-input" name='boolean_property' {{ !$mymodel->boolean_property?: 'checked' }}>
Если флажок установлен, возвращаемое значение «включено» (= строка). В моем маршруте магазина (или обновления) я заполняю свою модель значениями, возвращенными формой, и сохраняю ее.
public function update(Request $request, MyModel $mymodel)
{
$mymodel->fill($request->input());
$mymodel->save();
return redirect()->route('mymodels.edit', ['mymodel' => $mymodel]);
}
Однако, так как значение моего 'boolean_property' теперь 'включено' (= строка) MySQL не очень счастлив, когда я пытаюсь сохранить его как логическое значение в моей базе данных ...
Я могу решить эту проблему следующим образом:
public function update(Request $request, MyModel $mymodel)
{
$mymodel->fill($request->input());
$mymodel->done = $request->input('boolean_property') ? 1 : 0;
$mymodel->save();
return redirect()->route('mymodels.edit', ['mymodel' => $mymodel]);
}
Но это решение не очень элегантно, так как я должен отслеживать каждую часть своего кода, где я каждый раз заполняю свою модель значением флажка Я хочу добавить, изменить или удалить логическое свойство.
Вероятно, есть лучший способ сделать это, изменив что-то в классе моей модели, но я не могу найти, как это сделать. Вот почему я спрашиваю вас, надеясь, что кто-то, более привыкший к Laravel, чем я, может помочь мне с этим.
Подводя итог, мой вопрос: Как лучше всего справиться с Laravel свойство, определяемое флажком, которое я хочу использовать в качестве логического значения во всем моем коде и иметь возможность сохранить его как логическое значение (= tinyint) в моей (MySQL) базе данных?