2017-08-29 10 views
0

1つの方法で2つのテーブル(ハウスとコンタクト)に挿入しようとしています。ここでLaravelで複数のテーブルに挿入する方法

public function store(HouseRequest $request){ 

    $dataForm = $request->all(); 

    $house = House::create($dataForm); //Insert into House table 
    $contact = $house->contact()->create($dataForm['contact']); //Insert into Contact table 


    return back('dashboard/houses')->with('message', 'Success'); 
} 

は、私のテーブルの連絡先である:

Schema::create('contacts', function (Blueprint $table) {  
     $table->integer('house_id')->unsigned(); 
     $table->string('name', 255); 
     $table->char('phone', 11); 
     $table->timestamps(); 

     $table->foreign('house_id')->references('id')->on('houses')->onDelete('cascade') 
    } 

ハウスモデル:

public function contact(){ 
    return $this->hasOne(Contact::class); 
} 

それは(両方のテーブルに挿入する)正常に動作しますが、フォームを送信した後、私はこれを得ました:

SQLSTATE [42S22]:列が見つかりません:1054 'where句'で不明な列 'id'(SQL:select * from contactsここでid = 0制限1)

私は上記のクエリを実行している理由はわかりません。どうすればこのエラーを取り除くことができますか?

答えて

2

あなたは自分の移行に$table->increments('id');を追加するにIDの列を追加するのを忘れ:

Schema::create('contacts', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->integer('house_id')->unsigned(); 
    $table->string('name', 255); 
    $table->char('phone', 11); 
    $table->timestamps(); 

    $table->foreign('house_id')->references('id')->on('houses')->onDelete('cascade') 
} 
+1

それはとても簡単だった、私は実際にいくつかの睡眠を取得する必要があります。 – GabrielFiel

関連する問題