laravel orm更新文档[重复]
Posted
技术标签:
【中文标题】laravel orm更新文档[重复]【英文标题】:laravel orm update document [duplicate] 【发布时间】:2020-03-16 04:07:44 【问题描述】:我一直在尝试使用 laravel ORM 更新文档,但收到异常声明 unknown column updated_at
。
该列不在数据库表中,我在查询中也没有提到。
$foo = ProductMatchUnmatchHistory::where('product_match_unmatches_id', $pmu->id)
->update(['is_latest'=>0]);
ProductMatchUnmatchHistory
模特:
protected $fillable = [
'product_match_unmatches_id',
'human_verdict',
'ai_result',
'updated_on',
'updated_by',
'is_latest'
];
该表具有与$fillable
数组中相同的列,并具有附加的id
主键。
这是异常消息:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: update `product_match_unmatch_histories` set `is_latest` = 0, `updated_at` = 2019-11-20 12:20:02 where `product_match_unmatches_id` = 1759)
我不知道updated_at
列是从哪里添加到查询中的。
【问题讨论】:
【参考方案1】:请更改
你必须定义表名
protected $table = 'your table name';
protected $fillable = [
'product_match_unmatches_id',
'human_verdict',
'ai_result',
'updated_on',
'updated_by',
'is_latest'
];
$timestamps = false;
【讨论】:
$timestamps=false
为我工作。
好的,请选择这个答案作为有帮助的,谢谢。@Azima【参考方案2】:
首先请检查您的表updated_at 是否存在?因为sql错误说找不到列
【讨论】:
no.. 没有 updated_at。这是必填字段吗?【参考方案3】:如果您不想使用 Laravel 的 Eloquent 模型中的 updated_at
和 created_at
字段,请编辑您的 ProductMatchUnmatchHistory.php
模型并设置 $timestamps = false
。
class ProductMatchUnmatchHistory extends Model
//....
$timestamps = false;
//....
附加信息
Laravel 模型会在创建条目时自动设置 created_at
字段,并在您对行进行任何更改时更新 updated_at
列。这是通过模型上的$timestamps
字段处理的。如果设置为默认的true
,laravel 会假设你的模型有created_at
和updated_at
字段。
在大多数情况下,这很有帮助。您只需添加$table->timestamps();
,即可在迁移中轻松添加这些字段。
见https://laravel.com/docs/5.8/eloquent#eloquent-model-conventions (在时间戳下)
【讨论】:
【参考方案4】:@Azima 您应该在表格中添加该列,否则您将收到此错误,因为 eloquent 更新该列并且它不存在于表格中,或者您可以在您的模型中 $timestamps=false
【讨论】:
以上是关于laravel orm更新文档[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 中自动删除相关行(Eloquent ORM)
是否可以根据 Laravel 的 ORM 中的多个列删除重复项?
PHP 独立使用 laravel ORM 数据库组件,PHP ORM数据库模型组件