Laravel质量分配不插入布尔值



我正在尝试像拉拉维尔一样做质量分配。但是我有一个名为"隐藏"的字段,在数据库中是一个 TINYINT。从我的前端,我得到了一个布尔值。当我使用"隐藏"=> TRUE 进行批量分配时,DB 中的字段仍然是 0。当我将其转换回整数("隐藏"=> 1(时,该字段将另存为 1。

我确实在我的$fillable中添加了"隐藏"。

附言当我尝试使用带有布尔值的 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 项目。所以拉拉维尔是我的API。我确实从$post["隐藏"]中得到了一个真实的。

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

class YourModel extends Model
{
protected $casts = [
'hidden' => 'boolean',
];
}

这将告诉Laravel您希望将hidden列视为布尔值,并且像0和1这样的值将返回为真/假,真/假保存为0/1。 您可以在Laravel文档突变器中阅读更多信息。

将数据库类型更改为 Bool。如果你想通过迁移来做到这一点,你可以做:$table->布尔值('隐藏'(;

最新更新