2017-10-08 76 views
0

我有一个简单的组模型和联系人模型。Laravel 5.2:违反完整性约束:1452无法添加或更新子行:外键约束失败,未使用laravelcollective

联系“belongsTo”a组和“hasMany”联系人。

因此,我的文章迁移有一个名为“user_id”的外键。

*Group.php* 
<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Group extends Model 
{ 
    public function contacts() 
    { 
     return $this->hasMany('App\Contact', 'group_id'); 
    } 
} 

Contact.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Contact extends Model 
{ 
    protected $fillable = ['name', 'company', 'email', 'phone', 'address', 'group_id']; 

    public function group() 
    { 
     return $this->belongsTo('App\Group', 'group_id'); 
    } 
} 

*ContactsController.php* 
public function create() 
{ 
    // return 'Create New Contact'; 
    $groups = Group::all(); 

    return view('contacts.create', ['groups' => $groups]); 

} 
+0

所以我的文章迁移呼吁外键“GROUP_ID” *对不起,错误被命名! –

+0

清空有外键的数据库表,然后运行迁移 –

+0

当运行迁移咒语“[Symfony的\分量\调试\异常\ FatalThrowableError] 类‘CreateGroupsTable’未找到” –

回答

0

尝试以下操作:

  1. 从数据库中删除所有表
  2. 运行composer dump-autoload
  3. 检查所有迁移文件有正确的文件名称,类别nam ES和日期前缀(见下文)
  4. 运行php artisan migrate

迁移:

类名必须是按照文件名

例如:在文件“2014_12_08_100923_create_items_tables.php “必须使用名称为”CreateItemsTables“的类使用CamelCase单词。

文件名必须遵循正确的日期格式前缀

迁移文件必须按如下YYYY_MM_DD_000000_create_some_table.php

+0

我已经完成了这些步骤,发现其中一个表的名称存在错误,但在输入新联系人时出现同样的错误。我使用虚拟数据的Datebase Seeder.php.In ContactsControlle - > public function create() { //返回'创建新联系人'; $ groups = Group :: all(); return view('contacts.create',['groups'=> $ groups]); } –

相关问题