我正在尝试使用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。
答案 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');