3 回答

TA貢獻1795條經驗 獲得超7個贊
您所使用的數據庫有可能是students
手動(不是通過遷移,而是通過執行未設置自動增量的 SQL 查詢)或在應用遷移之后為表設置了架構的數據庫,自動增量已被刪除。
因為您的遷移代碼是根據該方法的官方 Laravel 文檔increments(string $attribute)
正確編寫的:
z
我在這里看到兩個解決方案:
通過 SQL 查詢更改表列,使其與遷移中的描述匹配
ALTER TABLE students CHANGE id id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY;
或使用 phpmyadmin 或 IDE 工具進行相同操作;
使用遷移 ( ) 生成模式
php artisan migrate --path=database/migrations/..._create_students_table.php
,但為此,您首先需要保存學生表數據,例如保存到轉儲。
由于您使用的是phpmyadminid
?,請查看表中屬性的設置students
。

TA貢獻1802條經驗 獲得超4個贊
根據您的控制器代碼判斷,我認為錯誤位于您獲取學生模型實例的行中的某個位置
改變
$student = new Student;
到
$student = new Student();
您需要特定模型的新實例才能插入新 ID,也請發布您當前的模型代碼。
示例模型代碼。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Product extends Model
{
use SoftDeletes;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'product_bar_code', 'product_name', 'product_image', 'product_price'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
}
也許您編寫模型代碼的方式有問題。

TA貢獻1864條經驗 獲得超2個贊
我能想到的唯一原因是如果你在模型中做了這樣的事情:
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = false;
如果是這樣,則應將其設置為 true 或完全刪除。
其次,確保您的id模型受到保護,如下所示:
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = ['id'];
這樣您就可以避免大量分配。
- 3 回答
- 0 關注
- 229 瀏覽
添加回答
舉報