Php 用复选框返回的值填充需要存储在MySQL数据库中的模型的最佳方法是什么?
我有一个模型属性叫做“boolean_属性”。 (当然,下面的模型就是一个例子。我的真实模型有更多的属性。) 然而,由于我的'boolean_property'的值现在是'on'(=string),所以当我试图将其保存为数据库中的布尔值时,MySQL不是很高兴 我可以这样解决这个问题: 但是这个解决方案不是很优雅,因为每次我想添加、更改或删除布尔属性时,我都必须跟踪代码的每个部分,在那里我用复选框值填充模型 也许有更好的方法可以做到这一点,在我的模型类中修改一些东西,但我找不到如何做。 这就是为什么我问你,希望比我更习惯拉威尔的人能帮我Php 用复选框返回的值填充需要存储在MySQL数据库中的模型的最佳方法是什么?,php,laravel,Php,Laravel,我有一个模型属性叫做“boolean_属性”。 (当然,下面的模型就是一个例子。我的真实模型有更多的属性。) 然而,由于我的'boolean_property'的值现在是'on'(=string),所以当我试图将其保存为数据库中的布尔值时,MySQL不是很高兴 我可以这样解决这个问题: 但是这个解决方案不是很优雅,因为每次我想添加、更改或删除布尔属性时,我都必须跟踪代码的每个部分,在那里我用复选框值填充模型 也许有更好的方法可以做到这一点,在我的模型类中修改一些东西,但我找不到如何做。 这就
总而言之,我的问题是:处理由复选框定义的属性的最佳方法是什么,我希望在所有代码中使用该属性作为布尔值,并能够将其保存为my(MySQL)数据库中的布尔值(=tinyint)?您可以使用此处定义的mutator 看起来是这样的
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Set the user's news letter preference.
*
* @param string $value
* @return void
*/
public function setNewsletterAttribute($value)
{
$this->attributes['wants_newsletter'] = isset($value);
}
}
我已经尝试过这个解决方案,但我写的是“setBooleanProperty”而不是“setBooleanPropertyAttribute”。。。无论如何现在好多了!谢谢!随时都可以。
<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]);
}
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]);
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Set the user's news letter preference.
*
* @param string $value
* @return void
*/
public function setNewsletterAttribute($value)
{
$this->attributes['wants_newsletter'] = isset($value);
}
}