Laravel质量分配不会插入布尔值

时间:2018-08-29 08:01:58

标签: php mysql laravel eloquent

我正在尝试使用laravel进行大规模任务。但是我有一个名为“ hidden”的字段,该字段在数据库中是TINYINT。从前端,我得到一个布尔值。当我用'hidden'=> TRUE进行大规模分配时,数据库中的字段仍为0。当我将其转换回整数('hidden'=> 1)时,该字段将另存为1。

我确实在我的$ fillable中添加了“ hidden”。

P.S。当我尝试使用带有布尔值的mysql直接将其插入数据库时​​,它会起作用。

有人知道怎么了吗?

编辑:这是我的代码,

公共功能存储区(请求$ request){

班组扩展模型 {     使用可通知的;

const CREATED_AT = 'created';
const UPDATED_AT = 'updated';

protected $table = 'groups';

protected $casts = [
    'hidden' => 'boolean',
];

protected $fillable = [
    'hidden',
     // etc
];

}

public function store(Request $request) {
    $post = $request->all();
    $group_id = Group::create($post);
}

前端是Vue项目。 laravel是我的API。而且我确实从$ post ['hidden']中得到了TRUE。

2 个答案:

答案 0 :(得分:0)

您需要在模型中转换布尔值:

class YourModel extends Model
{

    protected $casts = [
        'hidden' => 'boolean',
    ];
}

这将告诉Laravel您希望将hidden列视为布尔值,并且将像0和1这样的值返回为true / false,并将true / false保存为0/1。 您可以在Laravel doc mutators中阅读更多内容。

答案 1 :(得分:0)

将数据库类型更改为Bool。如果您想通过迁移来做到这一点,可以这样做:$ table-> boolean('hidden');