Laravel错误将数据从另一个表插入到表中

Posted

技术标签:

【中文标题】Laravel错误将数据从另一个表插入到表中【英文标题】:Laravel error inserting data into table from another table 【发布时间】:2021-12-30 12:06:20 【问题描述】:

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

 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 我用表格模式更新了问题 【参考方案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,
        ]);

【讨论】:

非常感谢,现在可以使用了

以上是关于Laravel错误将数据从另一个表插入到表中的主要内容,如果未能解决你的问题,请参考以下文章

对第一个表的数据进行排序后从另一个表插入到表中

如何从另一个表中检索并再次将其输入到 laravel 中的另一个表中?

创建表,然后将数据从另一个表插入到新表中

Ajax 使用 POST 方法发送数据,但 PHP 函数不会将它们插入到表中

自动从 Mysql 表中删除的记录

如何使用 c#asp.net 将数据库中的数据插入到表中?