【问题标题】:Laravel error inserting data into table from another tableLaravel错误将数据从另一个表插入到表中
【发布时间】:2023-03-18 23:19:02
【问题描述】:

我正在尝试使用以下代码将表单数据和一个字段插入到产品表中,该字段是我从另一个名为“购买”的表中提取的

 Product::create([
            'purchase_id'=>$request->product,
            'price'=>$price,
            'discount'=>$request->discount,
            'description'=>$request->description,
            'purchase_purchaseprice' => Purchase::where('id',$request->product)->get('price'),
        ]);

但我收到此错误消息,我认为问题出在[{"price":"25.00"}]但我未能格式化查询以仅插入 25.00 金额,请帮忙?

Illuminate\Database\QueryException SQLSTATE[22007]:日期时间无效 格式:1366 不正确的十进制值:'[{"price":"25.00"}]' for column laravel.products.purchase_purchaseprice 在第 1 行(SQL:插入 进入products (purchase_id, price, discount, description, purchase_purchaseprice, updated_at, created_at) 值 (262, 4000, 0, ?, [{"price":"25.00"}], 2021-11-19 18:25:59, 2021-11-19 18:25:59))

这是表架构

+------------------------+------------------------+------+-----+---------+----------------+
| Field                  | Type                   | Null | Key | Default | Extra          |
+------------------------+------------------------+------+-----+---------+----------------+
| id                     | bigint(20) unsigned    | NO   | PRI | NULL    | auto_increment |
| purchase_id            | bigint(20) unsigned    | YES  | MUL | NULL    |                |
| price                  | decimal(15,2) unsigned | NO   |     | 0.00    |                |
| discount               | decimal(15,2) unsigned | NO   |     | 0.00    |                |
| description            | text                   | YES  |     | NULL    |                |
| deleted_at             | timestamp              | YES  |     | NULL    |                |
| created_at             | timestamp              | YES  |     | NULL    |                |
| updated_at             | timestamp              | YES  |     | NULL    |                |
| purchase_purchaseprice | decimal(15,2) unsigned | NO   |     | 0.00    |                |
+------------------------+------------------------+------+-----+---------+----------------+

【问题讨论】:

  • 您可以仔细检查并显示您的表架构吗?显然purchase_purchaseprice 设置为日期时间列
  • @aynber 我用表格模式更新了问题

标签: php mysql laravel eloquent


【解决方案1】:

看起来您将 $price 作为 json 而不是简单的小数,因此您必须对其进行解码...

另一个问题,您正在将一个数组分配给 purchase_purchaseprice' ... 解决这个问题:

 Product::create([
            'purchase_id'=>$request->product,
            'price'=>json_decode($price,true)[0]['price'],
            'discount'=>$request->discount,
            'description'=>$request->description,
            'purchase_purchaseprice' => Purchase::find($request->product)->price,
        ]);

【讨论】:

  • 非常感谢,现在可以使用了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 2018-07-25
  • 2020-09-28
  • 1970-01-01
相关资源
最近更新 更多