我只是想做一个记录,如果达到指定的限制,将重置ID。
我做了这次迁移。
public function up(){
Schema::create('records', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('age');
});
}
public function down(){
Schema::dropIfExists('records');
}
然后插入一些数据,输出如下。
现在,我已经可以从数据库中插入数据,没有任何问题。
我只是想有一个功能,可以重置或改变我的表中的id。
下面是示例条件。例如:我有一个限制记录5然后重置id.所以如果我尝试插入一个记录,那么它将大于限制,它会重置我的表上的id为1.
我试着让这个功能
public function insert_record(Request $request){
$record = new Record();
$record->name = $request->to_insert_name;
$record->age = $request->to_insert_age;
if($record->id == 5){
DB::update("ALTER TABLE records AUTO_INCREMENT = 1;");
Record::insert(
[
'name' => $request->to_insert_name;
'age' = $request->to_insert_age;
]
);
}else{
Record::insert(
[
'name' => $request->to_insert_name;
'age' = $request->to_insert_age;
]
);
}
}
但我得到这个错误。
SQLSTATE[42000]:[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]在“AUTO_INCREMENT”附近语法不正确。
我尝试了另一个DB语句来更改序列。
DB::statement("UPDATE SQLITE_SEQUENCE SET seq = 1 WHERE name = 'records'");
但是,还是出现了这个错误。
SQLSTATE[42S02]:[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]对象名称“SQLITE_SEQUENCE”无效。
如何实现像下面这样的输出?
1条答案
按热度按时间zwghvu4y1#
ID字段是唯一值。它不能包含重复的值。可以通过向表中添加整数类型的索引字段来实现此操作。
将其添加到Record模型中。