2017-03-15 8 views
1

ようこそ!データベースノートとパイロットには2つのテーブルがあり、パイロットに属するメモを表示したい。私はノートテーブルに外部キーを追加しましたが、私は新しいノートを作成しようとすると、私はこのような問題を持っている:laravel - 外部キーを使用したクエリ

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`app`.`notes`, CONSTRAINT `notes_pilot_id_foreign` FOREIGN KEY (`pilot_id`) REFERENCES `pilots` (`id`)) 

注モデル:

class Note extends Model 
    { 
     protected $table = 'notes'; 
     /** 
     * The attributes that are mass assignable. 
     * 
     * @var array 
     */ 
     protected $fillable = [ 
      'data', 'zadanie', 'uwagi', 'pilot_id', 
     ]; 

     public function pilot() { 
      return $this->belongsTo(Pilot::class); 
     } 
    } 

パイロットモデル:

class Pilot extends Model 
{ 
    protected $table = 'pilots'; 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'phone', 'email', 
    ]; 

    public function note() { 
     return $this->hasMany(Note::class); 
    } 
} 

注意コントローラ店方法:

public function store(Request $request) 

{ 

    $this->validate($request, [ 

     'data' => 'required', 

     'zadanie' => 'required', 

     'uwagi' => 'required', 

    ]); 


    $note = new Note (array(
     'data' => $request->get('data'), 
     'zadanie' => $request->get('zadanie'), 
     'uwagi' => $request->get('uwagi'), 

    )); 
    $note->save(); 
    $note->pilot()->sync($request->get('pilots')); 

    return redirect()->route('uwagi.index') 

        ->with('success','Uwagi dodane poprawnie'); 

} 
+0

移行テーブルまたはデータベーステーブルで外部キーをチェックする必要があります。 –

答えて

0

この 返す$ this-> hasMany( 'App \ Note'); そして これを試してください 返す$ this-> belongsTo( 'App \ Pilot');

0

問題を解決しました。私は、移行時に公開キーで外部キーを削除していませんでした。

関連する問題