【发布时间】:2021-03-03 20:31:16
【问题描述】:
我需要将路由中传递到数据库的 id 保存在我的 store 函数中,该函数有一个单独的函数来验证,
这是我的网络路线
Route::resource('venues/{venue}/categories/{category}/sub-categories', 'Manage\SubCategoriesController');
这是我的store 函数
public function store($venue, $category, SubCategory $subCategory)
{
$subCategory->create($this->validateRequest());
dd('created');
}
这是我的验证函数
// ! Validation
private function validateRequest()
{
return request()->validate([
'name'=>'required',
'discount'=>'sometimes',
'position'=>'required',
'special_start'=>'sometimes',
'special_end'=>'sometimes',
'category_id'=>'sometimes',
'venue_id'=>'sometimes'
]);
}
我需要从路由 url 中获取 category_id 和 venue_id 并将其保存到数据库中
我尝试在 validate 函数中执行此操作,但它会引发错误
// ! Validation
private function validateRequest($venue, $category)
{
return request()->validate([
'name'=>'required',
'discount'=>'sometimes',
'position'=>'required',
'special_start'=>'sometimes',
'special_end'=>'sometimes',
'category_id'=>$venue,
'venue_id'=>$category
]);
}
存储功能
public function store($venue, $category, SubCategory $subCategory)
{
$subCategory->create($this->validateRequest($venue, $category));
dd('created');
}
有人可以建议我解决这个问题吗
【问题讨论】:
-
你检查
dd($request->all()是否所有数据都来了? -
resource定义名称应该是Route::resource('venues.categories.sub-categories', ...)... 并且验证工作的规则不是值 -
Route::resource('one.two', 'TestController');它会给http://127.0.0.1:8000/one/{one_id}/two/{two_id} -
'category_id'=>$venue, 'venue_id'=>$category看起来你搞混了?! -
您实际上想通过输入验证
category_id和venue_id的什么?
标签: laravel eloquent laravel-7 laravel-validation