3 回答

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

TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
根據(jù)您的控制器代碼判斷,我認(rèn)為錯誤位于您獲取學(xué)生模型實例的行中的某個位置
改變
$student = new Student;
到
$student = new Student();
您需要特定模型的新實例才能插入新 ID,也請發(fā)布您當(dāng)前的模型代碼。
示例模型代碼。
<?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貢獻(xiàn)1864條經(jīng)驗 獲得超2個贊
我能想到的唯一原因是如果你在模型中做了這樣的事情:
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = false;
如果是這樣,則應(yīng)將其設(shè)置為 true 或完全刪除。
其次,確保您的id模型受到保護(hù),如下所示:
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = ['id'];
這樣您就可以避免大量分配。
- 3 回答
- 0 關(guān)注
- 242 瀏覽
添加回答
舉報