【问题标题】:"Incorrect integer value" when inserting data [Eloquent]插入数据时出现“不正确的整数值”[Eloquent]
【发布时间】:2021-12-02 08:59:56
【问题描述】:

我的控制器

        $this->validate($request, [
            'master_item_id.*' => ['required'],
            'quantity.*' => ['required', 'numeric', 'gt:0']
        ]);

        $master_item_id = array_map('intval', $request->master_item_id);
        $quantity = array_map('intval', $request->quantity);
        $price = MasterItem::whereIn('id',$master_item_id)->get('price');

        $transaction = Transaction::create([
            'total_price' => 1,
            'last_edited_by' => Auth::user()->name
        ]);

        foreach ($master_item_id as $key => $no) {
            $input['transaction'] = $transaction->id;
            $input['master_item_id'] = $no;
            $input['quantity'] = $quantity[$key];
            $input['price'] = $price[$key];
            TransactionItem::create($input);
        }

我的模型

    protected $table = 'transaction_item';
    protected $guarded = [];
    public $timestamps = false;
    
    public function transaction()
    {
        return $this->belongsTo(Transaction::class, 'transaction_id');
    }
    public function item()
    {
        return $this->belongsTo(MasterItem::class, 'master_item_id');
    }

当我创建时,弹出这个错误。

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '{"price":1000000}' for column `myDatabase`.`transaction_item`.`price` at row 1

我知道问题是因为我的$price,但我不知道如何解决这个问题,有没有更好更简单的方法来解决我的问题?谢谢!

【问题讨论】:

    标签: laravel eloquent laravel-8


    【解决方案1】:

    很确定问题是

    $input['price'] = $price[$key];
    

    因为MasterItem::whereIn('id',$master_item_id)->get('price'); 会返回如下内容:

    [{价格:X},{价格:Y} ...]
    

    而不是像

    [X, Y]
    

    试试这个:

    $input['price'] = $price[$key]['price'];
    

    【讨论】:

      猜你喜欢
      • 2023-02-02
      • 2021-04-12
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2021-04-23
      • 1970-01-01
      相关资源
      最近更新 更多