2016-03-20 14 views
0

私は今laravelを学んでいます。私はこの問題を抱えています。私はコントローラの機能に2つのリクエストパラメータを渡しました。最初のリクエストパラメータはオブジェクト値を保持しますが、保存されるテーブルのフィールドにはテキストデータ型があるため、シリアル化されたフォームに変換しました。 2番目のリクエストパラメータはoverall_total計算値を保持し、floatデータ型フィールドを持ちます。私の問題は、データベースにどのように格納するのですか?私は、create関数を使用しようとしましたが、エラーを返します。これに関するいくつかのフォーラムはあまり明確ではありません。私はまだそれを把握することはできません。誰か助けてくれますか?ここに私のコードがあります。複数のリクエストパラメータをlaravel 5.2に保存する方法は?

機能ストア

public function store(Request $request){ 

     $serialize_po = serialize($request['purchase_orders']); 
     $overall_total = $request['overall_total']; 
     $purchase_orders_save = PurchaseOrder::create(?); 

} 

はどのようにして作成し使用して2つのパラメータは保存しますか?または私はそれを保存することができる他の方法はありますか? $request['purchase_orders']

$request['overall_total']

enter image description here

下図に示されているだけの数です。例えば。 310

私のデータベーステーブルの構造は、このよう

enter image description here

答えて

1

Laravelのcreate()関数は、配列キーが列の名前であり、配列値が列の対応する値である連想配列を受け入れます。

だからあなたの店の機能は、次のようになります。注意すべき

public function store(Request $request){ 
    $serialize_po = serialize($request['purchase_orders']); 
    $overall_total = $request['overall_total']; 
    $purchase_orders_save = PurchaseOrder::create([ 
     'purchase_orders' => $serialize_po, 
     'overall_total' => $overall_total 
    ]); 
} 

もうひとつは、安全対策として、Laravelは、モデルの特性は、外にこの方法で充填することができないことですボックス。連想配列を渡すことによって塗りつぶすことができる$fillableプロパティを使用してモデルにリストする必要があります。そうしないとMassAssignmentExceptionになる可能性があります。

だからあなたのモデルでは、あなたはおそらく、少なくとも以下を持っている必要があります:

class PurchaseOrder extends Model 
{ 
    protected $fillable = ['purchase_orders', 'overall_total']; 
} 

あり、より多くのオプションと、これを行うための方法がありますが、それは基本的で典型的なシナリオです。 create()方法を使用し、質量割り当てを扱う上

詳細情報は、マニュアルを参照してください:https://laravel.com/docs/5.2/eloquent#mass-assignment

1

何かの下に示されている:あなたは多くを探検したい場合は

DB::table('purchaseOrder')->insert(
    ['purchase_orders' => $serialize_po,'overall_total' => $overall_total] 
); 

docを参照してください。

2

は、お使いのモデル名が発注書で考えると、あなたは最初にそれの新しいインスタンスを作成する必要があります。次に、saveメソッドを使用します。

public function store(Request $request) 
{ 
    $purchaseOrder = new PurchaseOrder; 
    $purchaseOrder->overall_total = $request['overall_total']; 
    $purchaseOrder->purchase_orders = serialize($request['purchase_orders']); 
    $purchaseOrder->save(); 
} 

は、詳細はhttps://laravel.com/docs/5.2/eloquent#basic-insertsを参照してください。

関連する問題