Qaz*_*azi 8 laravel laravel-5.2 entrust
我安装并配置了Laravel 5.2,它运行正常,因为User ACL我zizaco/entrust在运行此命令时安装了包php artisan migrate(用于创建roles,permissions表等),导致以下错误
[Illuminate\Database\QueryException] SQLSTATE [HY000]:常规错误:1215无法添加外键约束(SQL:alter table
role_useradd constraint role_user_user_id_foreign foreign key(user_id)引用``(id)on update cascade on update cascade)[PDOException] SQLSTATE [HY000]:常规错误:1215无法添加外键约束
可能是什么原因 ?我错过了什么吗?我遵循委托网站的逐步指导方针
Qaz*_*azi 17
我修复了这个问题,在委托迁移文件中,users缺少表名.见以下行
$ table-> foreign('user_id') - > references('id') - > on('') - > onUpdate('cascade') - > onDelete('cascade');
所以我换成了这个,
$ table-> foreign('user_id') - > references('id') - > on(' users ') - > onUpdate('cascade') - > onDelete('cascade');
我添加了users表名,问题是固定的.
原因,为什么我遇到这个问题?
在config/auth.php文件'table'=>'users'中,提供者数组中没有提到的键/对,请参见下文(这是默认值,表示安装了新的laravel时)
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
Run Code Online (Sandbox Code Playgroud)
当php artisan entrust:migration命令运行时,它users从上面的providers数组中提取表名,如果在迁移文件中没有提到表,则关系设置为空.
$ table-> foreign('user_id') - > references('id') - > on('') - > onUpdate('cascade') - > onDelete('cascade');
所以,像这样在提供者数组中添加表.
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'table'=>'users'
],
Run Code Online (Sandbox Code Playgroud)
在委托迁移的运行命令之后,php artisan entrust:migration这将生成正确的迁移文件.
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |