我有下面的代碼來創建的數據庫中的條目: $element_names_array = explode(',', $request->input('element_names')); foreach ($element_names_array as $element) { $data[$element] = $request->input($element); } $model = '\\App\\' . $request->input('connected_model'); return call_user_func_array($model . '::create', $data);
創建模型:創建動態使用call_user_func_array給出Laravel錯誤5.2
,創建陣列和傳遞到call_user_func_array功能,這將觸發將該數組作爲參數的Model::create()
方法。
但是,由於某種原因,在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
正如你可以看到,一個數組傳遞給call_user_func_array ......但它被轉換爲字符串。這是怎麼回事?
此代碼僅供單個用戶使用......也是一個BOT腳本。別擔心。但肯定請指出安全漏洞... – notANerdDev
@notANerdDev那麼你是從用戶輸入構建代碼,因此惡意個人可能會製作一個發佈請求,爲您的代碼中的任何模型創建新記錄,例如用戶,折扣,交易等(我不知道你的數據庫是什麼,所以我選擇了一些可怕的聲音!) – Steve
哦,你!大聲笑...我看到...我有點知道,但再一次...這是一個使用應用程序的機器人...所以..沒有後顧之憂。 – notANerdDev