2016-08-03 1 views
0

にエラーを与えて動的に作成する::モデルの作成しますModel::create()メソッドは、配列を引数として渡します。はcall_user_func_arrayを使用して、私は、データベース内のエントリを作成するために、次のコードを持っているLaravel 5.2

しかし、何らかの理由でcall_user_func_array()の直後に、配列型が文字列型に変換されます。

私はこのエラーとエラーログを取得しています:あなたが気づくことができるように、アレイは、call_user_func_arrayに渡され

Type error: Argument 1 passed to Illuminate\Database\Eloquent\Model::create() must be of the type array, string given

エラーログ

in Model.php line 570 at Model::create('R200500002', 'MALSKDJSNAM123123') at call_user_func_array('\App\RepairOrder::create', array('ro_number' => 'R200500002', 'vin_number' => 'MALSKDJSNAM123123')) in GdmsBotTask.php line 26

...しかし、文字列に変換されます。どうしたの?

答えて

1

call_user_func_arrayは、アレイを個々のパラメータに変換します。

修正するには、call_user_funcを使用するか、または親配列に$dataをラップ:このコードは非常に信頼された認証されたユーザーからのみ呼び出し可能でない限り、サイドノートとして

return call_user_func($model . '::create', $data) 
return call_user_func_array($model . '::create', [$data]) 

、あなたは巨大なセキュリティ上の問題を抱えている

+0

このコードは1人のユーザーだけが使用しています...それもBOTスクリプトです。心配ない。しかし、確かにセキュリティの欠陥を指摘してください... – notANerdDev

+0

@notANerdDevまあ、あなたはユーザー入力からコードを構築しているので、悪意のある人物があなたのコード内の任意のモデル、例えばユーザのために新しいレコードを作成する投稿要求を作り出すことは可能です、割引、取引など(私はあなたのデータベースが保持しているので、私はいくつかの怖い響きのものをピックした!) – Steve

+0

ああよ! LOL ...私はそれを見ている...私はちょっとそれを知っていた..しかし再び...それはアプリを使用してボット...だから..心配しないでください。 – notANerdDev

関連する問題