对于隐式模型绑定,在路由上, for ,软删除模型,我遇到了问题。使用withTrashed
方法时,不调用Model中的resolveRouteBinding
方法。当withTrashed
方法从路由声明中删除时,将按预期调用方法resolveRouteBinding
。
复制步骤:
路由/web.php
Route::get('user/{user}', function(SoftDeletedModel $user) {
dd($user);
})->withTrashed(); //withTrashed is used
模型/SoftDeletedModel.php
use SoftDeletes;
public function resolveRouteBinding($value, $field = null) {
dd("Successfully Substituted Bindings when using WithTrashed."); //This is not displayed.
return parent::resolveRouteBinding($value, $field);
}
这是已知的窃听器还是我哪里出错了?在github上也存在一个问题
发布于 2021-12-03 10:55:38
您需要使用此方法resolveSoftDeletableRouteBinding
而不是resolveRouteBinding
。
/**
* Retrieve the model for a bound value.
*
* @param mixed $value
* @param string|null $field
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function resolveSoftDeletableRouteBinding($value, $field = null)
{
return parent::resolveSoftDeletableRouteBinding($value, $field);
}
发布于 2022-02-17 05:54:05
由于Laravel v8.55.0,在路由中支持withTrashed()
:
Route::post('/user/{user}', function (ImplicitBindingModel $user) {
return $user;
})->middleware(['web'])->withTrashed();
https://stackoverflow.com/questions/70212540
复制相似问题