我正在尝试像拉拉维尔一样做质量分配。但是我有一个名为"隐藏"的字段,在数据库中是一个 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->布尔值('隐藏'(;