2016-12-19 4 views
2

リレーションシップを使用して単一フォームを送信すると同時に2つのテーブルにデータを保存できますか?Laravel:単一フォームを送信する際に2つのテーブルにデータを保存する関係

私は2つのテーブルordersinvoicesを持っています。

私の次のモデルは、このようなものです:

class Order extends Model 
{ 
    protected $fillable = ['company_id','delivery_date', 
    'product_name','amount','qty','delivery_vehicle' 
    ,'delivery_cost','status','created_by','verified_by']; 

} 

と私の請求書のモデルは、このようなものです:

class Invoice extends Model 
{ 
    protected $fillable = ['company_id','invoice_id', 'product_name' 
    'qty','total cost'] 
} 

そして、私のコントローラは、このようなものです:

public function create(Request $request) 
    { 
     $order = Order::create([ 
      Input::get('company_id'), 
      Input::get('product_name') 
      Input::get('qty') 
      Input::get('delivery_date') 
      Input::get('delivery_cost') 
      //........ 

     ]; 

     $invoice = Invoice::create([ 
      Input::get('company_id'), 
      Input::get('product_name') 
      Input::get('qty') 
     ]; 
    return"Data Saved"; 
    } 

しかし、私がしたいです〜save using relationship

+0

作成したのに役立ちます願っていますか? –

+0

が作成されていません。実際にはlaravelの新版です。関係についてはあまり考えていません –

+0

これらの2つのテーブルの関係はどうなりますか?あなたは[** Docs **](https://laravel.com/docs/5.3/eloquent-relationships)内に示されているように実装しようとしましたか? –

答えて

0

あなたのモデルに$fillableが既に定義されているので、一括割り当てを使用してよりきれいに見せることができます。お使いのコントローラ:

public function create(Request $request) 
    { 
     $order = Order::create($request->all()); 
     $invoice = Invoice::create($request->all()); 
    return"Data Saved"; 
    } 

私はそれはあなたがあなたのモデルコード内でこれらのテーブルの間の任意の関係を

+0

これは上記と同じです。私はlaravelの関係を使用して保存したい –

+0

@Ranjeet Karki、あなたの質問も含まれています: 'コードがきれいになるように他のより良い方法'。このコードは元のコードよりもはるかにクリーンです。 – Learner

+0

私はそれを編集しました –

関連する問題