php - Laravel 5.8 说“array_map():预期参数 2 是一个数组,给定的 int”
问题描述
我无法处理这个错误,在 Laravel 5.8 上说“array_map(): Expected parameter 2 to be an array, int given”
基本上,我正在尝试像往常一样创建新记录,但今天出现了一些新错误。哈哈
这是我关于 store 方法的控制器
public function store(Request $request)
{
$request->validate([
'deadline' => 'required|date',
'category' => 'required',
'title' => 'required|max:255',
'street_name' => 'required|max:255',
'street_number' => 'required|numeric',
'city' => 'required|max:255',
'chief_town' => 'required|max:255',
'zipcode' => 'required|numeric',
'region' => 'required|max:255',
'country' => 'required',
'short_description' => 'required|max:255',
'description' => 'required|max:255',
'prize_description' => 'required|max:255',
'prizegiving_description' => 'required|max:255',
'brief' => 'required|max:255',
'max_winner' => 'required|numeric',
]);
Opportunity::create($request->all());
return redirect('/opportunity');
}
我的原始 create.blade.php
<form method="post" action="/opportunity">
<div class="form-group">
@csrf
<label for="title">title:</label>
<input type="text" class="form-control" name="title"/>
<label for="deadline">deadline :</label>
<input type="date" class="form-control" name="deadline"/>
<label for="category">category :</label>
<input type="text" class="form-control" name="category"/>
<label for="street_name">street_name :</label>
<input type="text" class="form-control" name="street_name"/>
<label for="street_number">street_number :</label>
<input type="number" class="form-control" name="street_number"/>
<label for="city">city :</label>
<input type="text" class="form-control" name="city"/>
<label for="chief_town">chief_town :</label>
<input type="text" class="form-control" name="chief_town"/>
<label for="zipcode">zipcode :</label>
<input type="number" class="form-control" name="zipcode"/>
<label for="region">region :</label>
<input type="text" class="form-control" name="region"/>
<label for="short_description">short_description :</label>
<input type="text" class="form-control" name="short_description"/>
<label for="country">country :</label>
<input type="text" class="form-control" name="country"/>
<label for="description">description :</label>
<input type="text" class="form-control" name="description"/>
<label for="prize_description">prize_description :</label>
<input type="text" class="form-control" name="prize_description"/>
<label for="prizegiving_description">prizegiving_description :</label>
<input type="text" class="form-control" name="prizegiving_description"/>
<label for="brief">brief :</label>
<input type="text" class="form-control" name="brief"/>
<label for="max_winner">max_winner :</label>
<input type="number" class="form-control" name="max_winner"/>
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
我的数据库表
public function up()
{
Schema::create('opportunities', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->date('deadline');
$table->string('category')->default('Care', 'Dres', 'Food', 'Home', 'Host', 'Job', 'Talk');
$table->string('street_name');
$table->integer('street_number');
$table->string('city');
$table->string('chief_town');
$table->integer('zipcode');
$table->string('region');
$table->string('country')->default('Italy');
$table->text('short_description');
$table->text('description');
$table->text('prize_description');
$table->text('prizegiving_description');
$table->text('brief');
$table->integer('max_winner');
$table->timestamps();
});
}
我的机会.php
class Opportunity extends Model
{
protected $fillable = [
'company_id',
'deadline',
'category',
'title',
'street_name',
'street_number',
'city',
'chief_town',
'zipcode',
'region',
'country',
'short_description',
'description',
'prize_description',
'prizegiving_description',
'brief',
'max_winner',
];
}
让我知道您是否需要进行其他调查,感谢 MS
这是Log::info($request->all());
在控制器中输入的结果
#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'array_map(): Ex...', '/Users/MatteoSi...', 92, Array)
#1 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php(92): array_map(Array, 1)
#2 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php(71): Illuminate\\Validation\\ValidationRuleParser->explodeExplicitRule(1)
#3 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php(49): Illuminate\\Validation\\ValidationRuleParser->explodeRules(Array)
#4 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(840): Illuminate\\Validation\\ValidationRuleParser->explode(Array)
#5 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(823): Illuminate\\Validation\\Validator->addRules(Array)
#6 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/Validator.php(213): Illuminate\\Validation\\Validator->setRules(Array)
#7 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/Factory.php(151): Illuminate\\Validation\\Validator->__construct(Object(Illuminate\\Translation\\Translator), Array, Array, Array, Array)
#8 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/Factory.php(101): Illuminate\\Validation\\Factory->resolve(Array, Array, Array, Array)
#9 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Validation/Factory.php(136): Illuminate\\Validation\\Factory->make(Array, Array, Array, Array)
#10 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Foundation/Providers/FoundationServiceProvider.php(53): Illuminate\\Validation\\Factory->validate(Array, Array)
#11 [internal function]: Illuminate\\Http\\Request->Illuminate\\Foundation\\Providers\\{closure}(Array)
#12 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php(110): call_user_func_array(Object(Closure), Array)
#13 /Users/MatteoSiri/Documents/sites/iNvisibili/app/Http/Controllers/OpportunityController.php(68): Illuminate\\Http\\Request->__call('validate', Array)
#14 [internal function]: Invisibili\\Http\\Controllers\\OpportunityController->store(Object(Illuminate\\Http\\Request))
#15 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#16 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('store', Array)
#17 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Invisibili\\Http\\Controllers\\OpportunityController), 'store')
#18 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176): Illuminate\\Routing\\Route->runController()
#19 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Routing/Router.php(680): Illuminate\\Routing\\Route->run()
#20 /Users/MatteoSiri/Documents/sites/iNvisibili/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
解决方案
首先,我认为您应该更改部分:
Opportunity::create($request->all());
至
$data = $request->only(['your', 'required', 'data']);
Opportunity::create($data);
因为您的请求中有一些其他数据在您的数据库模型中没有,例如 csrf 令牌。所以它可能会导致问题。
其次,请提供您/storage/logs/laravel.log
和您的方法以及行号,以便我可以为您提供更多帮助。
推荐阅读
- botframework - Microsoft Bot Framework:MS Teams 中的表情符号
- mysql - 如何使用 SSIS 通过基于唯一 ID 连接两个不同数据库来创建新表
- opengl - 如何在 openGL 中使用“压缩纹理”?
- c# - 在另一个项目中引用 DLL 时调用哪些方法/事件
- python - 尝试使用有多个键值对的函数将数据从字典写入文件
- angular - 在Angular 2+中订阅后API调用失败时如何重试
- sql - 在 ORACLE 数据库中查找列是否至少有一个 NULL 值的最快方法是什么?
- c# - 如何控制 LibVLCSharp 中的音频音高偏移?
- string - 数据工厂:csv列的类型都是字符串,不能更改
- php - 如何在 TYPO3 8.7 中检查数据库完整性