Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用复选框返回的值填充需要存储在MySQL数据库中的模型的最佳方法是什么?_Php_Laravel - Fatal编程技术网

Php 用复选框返回的值填充需要存储在MySQL数据库中的模型的最佳方法是什么?

Php 用复选框返回的值填充需要存储在MySQL数据库中的模型的最佳方法是什么?,php,laravel,Php,Laravel,我有一个模型属性叫做“boolean_属性”。 (当然,下面的模型就是一个例子。我的真实模型有更多的属性。) 然而,由于我的'boolean_property'的值现在是'on'(=string),所以当我试图将其保存为数据库中的布尔值时,MySQL不是很高兴 我可以这样解决这个问题: 但是这个解决方案不是很优雅,因为每次我想添加、更改或删除布尔属性时,我都必须跟踪代码的每个部分,在那里我用复选框值填充模型 也许有更好的方法可以做到这一点,在我的模型类中修改一些东西,但我找不到如何做。 这就

我有一个模型属性叫做“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);
    }
}