2017-10-08 8 views
0

私は単純なグループモデルと連絡先モデルを持っています。Laravel 5.2:整合性制約違反:1452子行を追加または更新できません。ラベール集約を使用せずに外部キー制約が失敗します

"belongsTo"グループとグループ "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

は、外部キーを持っているあなたのdbテーブルを空にし、移行の呪文を実行すると、移行 –

+0

を実行する「[symfonyの\コンポーネント\デバッグ\例外を\ FatalThrowableError] クラスのCreateGroupsTable 'が見つかりません」 –

答えて

0

次のことを試してみてください。

  1. データベース
  2. ランからすべての移行ファイルを持っていることをcomposer dump-autoload
  3. チェックをすべてのテーブルを削除します正しいファイル名、クラス名ESと日付の接頭辞(下記参照)
  4. 実行php artisan migrate

移行:

クラス名は、例えば、ファイル名

に従ってください:ファイルに「2014_12_08_100923_create_items_tables.php "CamelCase単語を使用して" CreateItemsTables "という名前のクラスである必要があります。 YYYY_MM_DD_000000_create_some_table.php

+0

手順を完了してテーブルの名前にエラーが見つかりましたが、新しい連絡先を入力するときに同じ誤りが表示されます。 Datebase Seeder.php.In ContactsControlle - > public function create()のダミーデータを使用します。 { // '新しい連絡先を作成'; $ groups = Group :: all(); 戻るビュー( 'contacts.create'、['groups' => $ groups]); } –

関連する問題