关键词:
【中文标题】Laravel 路由绑定模型未定义偏移量:9【英文标题】:Laravel Route Binding Model Undefined offset: 9 【发布时间】:2018-06-12 19:47:07 【问题描述】:我正在使用 laravel 5.2。我有一个名为 Book 的模型,然后尝试将路由绑定模型从我的控制器移动到 RouteServiceProvider.php
这是我将其移动到 RouteServiceProvider.php 之前的路由绑定模型
$book = Book::findOrFail($id);
之后(在我的 RouteServiceProvider.php 中)
$router->model('book', 'App\Book');
在我将它移动到 RouteServiceProvider 之前它可以正常工作,但现在它每次尝试更新时都会给我一个错误,(创建和存储工作正常)。
它未能更新数据库的输入,但是当我尝试在我的规则顶部使用dd($this->method());
进行调试时,它显示“PATCH”
错误是Undefined offset: 9 ...framework\src\Illuminate\Validation\Validator.php line 1461: $extra[$segments[$i]] = $segments[$i + 1];
我假设错误来自我的更新控制器 return view('dashboards.book', compact('book'));
或 mybe 来自补丁/更新方法的条件请求
这是完整的代码
控制器@更新
public function update(Book $book, BookRequest $request)
//$book = Book::findOrFail($id); move to the RouteServiceProvider
$input = $request->all();
$book->update($request->all());
//return view('dashboards.book');
return view('dashboards.book', compact('book'));
BookRequest.php
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class BookRequest extends Request
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
return true;
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
//$book = $this->route('book');
//$this->route()->parameter('books');
//dd($this->method());
// Check Create or Update
if ($this->method() == 'POST')
$label_rules = 'required|string|size:6|unique:books,label,';
$isbn_rules = 'sometimes|string|size:10|unique:books,isbn,';
else
$label_rules = 'required|string|size:6|unique:books,label,' .$this->route()->parameter('book');
$isbn_rules = 'sometimes|string|size:10|unique:books,isbn,' .$this->route()->parameter('book');
return [
'judul' => 'required|string|max:100',
'label' => $label_rules,
'isbn' => $isbn_rules,
'tanggal_terbit' => 'required|date',
'status' => 'required|in:tersedia,dipinjam,hilang,rusak',
'id_penulis' => 'required',
'id_penerbit' => 'required',
'id_kategori' => 'required',
];
RouteServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
/**
* This namespace is applied to the controller routes in your routes file.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function boot(Router $router)
//
parent::boot($router);
// route model binding
$router->model('book', 'App\Book');
/**
* Define the routes for the application.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function map(Router $router)
$router->group(['namespace' => $this->namespace], function ($router)
require app_path('Http/routes.php');
);
错误
in Validator.php line 1461
at HandleExceptions->handleError('8', 'Undefined offset: 9', 'E:\YUDY\WEB PROJECT\CLIENTS\perpus lab\testroutemodelbinding\vendor\laravel\framework\src\Illuminate\Validation\Validator.php', '1461', array('segments' => array('label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"'), 'extra' => array('label:"099187"' => 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"' => 'status:"tersedia"', 'id_penerbit:1' => 'id_kategori:1', 'id_penulis:1' => 'created_at:"2018-01-02 00:01:26"'), 'count' => '9', 'i' => '8')) in Validator.php line 1461
at Validator->getExtraConditions(array('label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"')) in Validator.php line 1379
at Validator->getUniqueExtra(array('books', 'label', '"id":15', 'judul:"Fast And Furious"', 'label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"')) in Validator.php line 1338
at Validator->validateUnique('label', '099187', array('books', 'label', '"id":15', 'judul:"Fast And Furious"', 'label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"'), object(Validator)) in Validator.php line 485
at Validator->validate('label', 'Unique') in Validator.php line 425
at Validator->passes() in ValidatesWhenResolvedTrait.php line 24
at FormRequest->validate() in FoundationServiceProvider.php line 41
at FoundationServiceProvider->Illuminate\Foundation\Providers\closure(object(BookRequest), object(Application)) in Container.php line 1031
at Container->fireCallbackArray(object(BookRequest), array(object(Closure))) in Container.php line 994
at Container->fireResolvingCallbacks('App\Http\Requests\BookRequest', object(BookRequest)) in Container.php line 648
at Container->make('App\Http\Requests\BookRequest', array()) in Application.php line 697
at Application->make('App\Http\Requests\BookRequest') in RouteDependencyResolverTrait.php line 85
at ControllerDispatcher->transformDependency(object(ReflectionParameter), array('book' => object(Book)), array('book' => object(Book))) in RouteDependencyResolverTrait.php line 58
at ControllerDispatcher->resolveMethodDependencies(array('book' => object(Book)), object(ReflectionMethod)) in RouteDependencyResolverTrait.php line 41
at ControllerDispatcher->resolveClassMethodDependencies(array('book' => object(Book)), object(DashboardController), 'update') in ControllerDispatcher.php line 143
at ControllerDispatcher->call(object(DashboardController), object(Route), 'update') in ControllerDispatcher.php line 94
at ControllerDispatcher->Illuminate\Routing\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96
at ControllerDispatcher->callWithinStack(object(DashboardController), object(Route), object(Request), 'update') in ControllerDispatcher.php line 54
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\DashboardController', 'update') in Route.php line 174
at Route->runController(object(Request)) in Route.php line 140
at Route->run(object(Request)) in Router.php line 724
at Router->Illuminate\Routing\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\closure(object(Request)) in VerifyCsrfToken.php line 64
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\closure(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\closure(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\closure(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\closure(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Router.php line 726
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\closure(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 53
at require_once('E:\YUDY\WEB PROJECT\CLIENTS\perpus lab\testroutemodelbinding\public\index.php') in server.php line 21
对错误有什么建议吗?
【问题讨论】:
您能否向我们提供问题的完整堆栈跟踪? @sisve 您好,感谢您的回复,请查看我的问题更新 为什么您的 $label_rules 和 $isbn_rules 在帖子中以逗号结尾?$this->route()->parameter('book')
可能会返回带有模型绑定的 Book 实例,而不是特定的 id。
我不确定,也许我在将控制器移动到 BookRequest 之前从控制器复制了规则。参考 laravel 文档 Forcing A Unique Rule To Ignore A Given ID: "'email' => 'unique:users,email_address,'.$user->id"。顺便说一句,我试图删除昏迷,但我把我扔到另一个错误SQLSTATE[HY093]: Invalid parameter number..
【参考方案1】:
您的验证规则之前假定路线段是一个标识符。随着模型绑定现在处于活动状态,它会返回一个模型实例。
$label_rules = 'required|string|size:6|unique:books,label,' .
$this->route()->parameter('book');
这可以在您的堆栈跟踪中看到。
in Validator.php line 1461
at HandleExceptions->handleError('8', 'Undefined offset: 9', 'E:\YUDY\WEB PROJECT\CLIENTS\perpuslab\testroutemodelbinding\vendor\laravel\framework\src\Illuminate\Validation\Validator.php', '1461', array('segments' => array('label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"'), 'extra' => array('label:"099187"' => 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"' => 'status:"tersedia"', 'id_penerbit:1' => 'id_kategori:1', 'id_penulis:1' => 'created_at:"2018-01-02 00:01:26"'), 'count' => '9', 'i' => '8')) in Validator.php line 1461
at Validator->getExtraConditions(array('label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"')) in Validator.php line 1379
at Validator->getUniqueExtra(array('books', 'label', '"id":15', 'judul:"Fast And Furious"', 'label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"')) in Validator.php line 1338
at Validator->validateUnique('label', '099187', array('books', 'label', '"id":15', 'judul:"Fast And Furious"', 'label:"099187"', 'isbn:"9918892810"', 'tanggal_terbit:"2018-02-10"', 'status:"tersedia"', 'id_penerbit:1', 'id_kategori:1', 'id_penulis:1', 'created_at:"2018-01-02 00:01:26"', 'updated_at:"2018-01-02 00:01:26"'), object(Validator)) in Validator.php line 485
at Validator->validate('label', 'Unique') in Validator.php line 425
唯一验证规则支持多个参数,而您尝试作为 id 传入的实际上是 "id":15'
(第一个逗号之前的数组的初始部分),然后是主键列 'judul:"Fast And Furious"'
,然后是尝试将其余条目解析为额外条件。它们应该成对出现(column,value,column,value,...
),但在您的情况下,数组中只剩下 7 个条目,一个奇数。因此失败。
【讨论】:
你的意思是我必须删除逗号? 不,我是说$this->route()->parameter('book')
返回一个 Book 实例,而不是您期望的标识符。如果需要,您必须从 Book 实例中读取 id。当我尝试使用 Laravel 中的“别名”从数据库中获取值时如何修复“未定义的偏移量:0”
】当我尝试使用Laravel中的“别名”从数据库中获取值时如何修复“未定义的偏移量:0”【英文标题】:Howtofix"Undefinedoffset:0"whenItrying\'togetvaluefromdatabaseusing"aliases"inLaravel【发布时间】:2019-09-0901:02:28【问题描述】... 查看详情
Laravel - 使用 json 字段自定义路由模型绑定中的键
】Laravel-使用json字段自定义路由模型绑定中的键【英文标题】:Laravel-Customizethekeyintheroutemodelbindingwithjsonfield【发布时间】:2022-01-2112:59:08【问题描述】:我想自定义路由模型绑定中的键,我做了这样的事情-useApp\\Models\\Post;Route::... 查看详情
遍历关系时出现“未定义的偏移量 0”
...时间】:2017-09-1506:37:00【问题描述】:我的系统中有两个模型,Patent和PatentApplicant。PatentApplicant迁移定义了外键:$table->integer(\'patent_id\')->unsigned();$ta 查看详情
Laravel 路由模型绑定 - Laravel 5.7
】Laravel路由模型绑定-Laravel5.7【英文标题】:LaravelRouteModelBinding-Laravel5.7【发布时间】:2021-05-2423:34:24【问题描述】:我正在尝试使用Laravel的路由模型绑定。我在RoutesServiceProvider中设置了一个绑定来执行一些自定义解析逻辑。这... 查看详情
Laravel 路由模型绑定与排序的急切加载?
】Laravel路由模型绑定与排序的急切加载?【英文标题】:Laravelroutemodelbindingwithsortedeagerloading?【发布时间】:2020-12-1610:39:48【问题描述】:我的产品也有cmets。这个cmets可以被投票,并且cmets也可以有子cmets。cmets通过在product模型... 查看详情
未定义的偏移量错误,但偏移量不是未定义的
】未定义的偏移量错误,但偏移量不是未定义的【英文标题】:Undefinedoffseterror,butoffsetisnotundefined【发布时间】:2011-03-1316:04:36【问题描述】:我明白了:Notice:Undefinedoffset:0在我的代码中,但是我可以print_r我想要获取的元素及其... 查看详情
Laravel 模型用户自定义绑定“/users/me/xxx”
】Laravel模型用户自定义绑定“/users/me/xxx”【英文标题】:Laravelmodelusercustombinding"/users/me/xxx"【发布时间】:2022-01-2307:25:13【问题描述】:我有类似用户绑定的路由Route::get(\'users/user/posts\',[PostController::class,\'index\']);Route::ge... 查看详情
未定义的偏移量:-1
】未定义的偏移量:-1【英文标题】:Undefinedoffset:-1【发布时间】:2022-01-0204:01:17【问题描述】:当我尝试获取动态输入标记的值并执行jquery函数时,我不仅没有得到输入的数字字符串值,而且一直得到一个Undefinedoffset:-1errorinLar... 查看详情
简单函数()中的php未定义偏移量
】简单函数()中的php未定义偏移量【英文标题】:phpUndefinedOffsetinsimplefunction()【发布时间】:2011-10-0514:08:13【问题描述】:我不确定为什么我会收到关于此问题的未定义偏移通知:<?php$numbers=array(\'1\',\'2\',\'3\');$total=0;for($i=0;... 查看详情
使用 Laravel 模型绑定模拟控制器测试
】使用Laravel模型绑定模拟控制器测试【英文标题】:MockingincontrollertestswithLaravelmodelbinding【发布时间】:2014-06-3018:52:26【问题描述】:我在我的路由中使用模型绑定将模型传递给我的控制器操作,并希望能够编写测试。如果测试... 查看详情
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP
】“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用PHP【英文标题】:"Notice:Undefinedvariable","Notice:Undefinedindex",and"Notice:Undefinedoffset"usingPHP【发布时间】:2022-01-1101:40:23【... 查看详情
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP
】“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用PHP【英文标题】:"Notice:Undefinedvariable","Notice:Undefinedindex",and"Notice:Undefinedoffset"usingPHP【发布时间】:2017-08-2717:03:14【... 查看详情
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP
】“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用PHP【英文标题】:"Notice:Undefinedvariable","Notice:Undefinedindex",and"Notice:Undefinedoffset"usingPHP【发布时间】:2022-01-0101:15:23【... 查看详情
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP
】“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用PHP【英文标题】:"Notice:Undefinedvariable","Notice:Undefinedindex",and"Notice:Undefinedoffset"usingPHP【发布时间】:2016-02-0401:09:04【... 查看详情
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP
】“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用PHP【英文标题】:"Notice:Undefinedvariable","Notice:Undefinedindex",and"Notice:Undefinedoffset"usingPHP【发布时间】:2017-09-2803:37:12【... 查看详情
“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP
】“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用PHP【英文标题】:"Notice:Undefinedvariable","Notice:Undefinedindex",and"Notice:Undefinedoffset"usingPHP【发布时间】:2015-12-0821:39:03【... 查看详情
注意:未定义的偏移量:0 in
】注意:未定义的偏移量:0in【英文标题】:Notice:Undefinedoffset:0in【发布时间】:2011-09-2619:59:29【问题描述】:我收到这个PHP错误,这是什么意思?Notice:Undefinedoffset:0inC:\\xampp\\htdocs\\mywebsite\\reddit_vote_tut\\src\\votes.phponline41从此代... 查看详情
数组检查未定义的偏移量php
】数组检查未定义的偏移量php【英文标题】:Arraycheckundefinedoffsetphp【发布时间】:2017-08-1913:22:21【问题描述】:我会试着解释一下。我有一个array:$arrayTime=array(0=>"07",1=>"09",3=>"13",4=>"15",5=>"17",6=>"19");这里可以看到没... 查看详情