mysql 布尔值未保存,Laravel

xvw2m8pv  于 2023-08-02  发布在  Mysql
关注(0)|答案(2)|浏览(129)

我将一些boolean字段与POST请求一起发送到Laravel控制器。但是,除了booleans之外,请求中的所有数据都被保存。

型号填充物

protected $fillable = [
        'name',
        'code',
        'governorate',
        'point',
        'overnight',
        'isResort',
        'family',
        'youth',
        'status',
        'description',
        'user_id',
        'price_currency',
        'map',
        'checkoutMessage',
        'checkoutYoutubeVideo',
        'max_person_count',
        'more_person_price',
        'age_limit',
        'productYoutubeVideo',
        'resortProductCount',
    ];

字符串
控制器

public function store(Request $request)
    {
        try{
            
            $data = $request->all();
            $data['user_id'] = auth('user-api')->user()->id;
            
            $gev_id = Str::before($request->governorate_id, ',');
            
            $product = RentProduct::create($data);
            
            $product->update([
                'code' => $gev_id.rand((int)0, (int)pow(2, 256)).$product->id,
            ]);

            return $this->returnData("product", RentProduct::where('id', $product->id)->with('photos')->get());

        }catch(\Throwable $th){

            return $this->returnError($th->getCode() , $th->getMessage());
        }
    }


奇怪的问题是,当我从store方法中删除并转储创建的产品时,boolean以正确的方式出现,但它被保存时没有boolean s。
Postman 请求

0aydgbwb

0aydgbwb1#

不要将'true'作为字符串发送,将1(true)或0(false)作为int发送。顺便说一下,不要忘记将列类型更改为tinyint(1)数据类型。

jm81lzqq

jm81lzqq2#

刚刚有了这个,奇怪的是$product->my_boolean_value = "true"不工作,但$product->setAttribute("my_boolean_value", "false")工作时,数据库列被定义为PostgreSQL上的布尔值。我的模型定义为:

class Product extends Model
{
    protected $casts = [
        'my_boolean_value' => 'boolean'
    ];
}

字符串

相关问题