我试图将所有404请求作为一行保存到数据库中。但是不知道该怎么做。 例如,我曾访问过example.com/demo,但example.com中不存在演示 对于这种情况,我需要在missing_pages表中添加“演示”。我刚刚为此创建了控制器。但是无法在web.php中处理,我是否需要通过提供程序来执行此操作?中间件?什么都做不了
public function test($slug)
{
if (empty(MissingPage::where('slug', $slug)->get())) {
$mp = new MissingPage();
$mp->slug = $slug;
$mp->count = 1;
}
else {
$mp = MissingPage::where('slug', $slug)->first();
$mp->increment('count');
}
}
我应该在web.php中做什么?任何想法?预先感谢。
答案 0 :(得分:3)
您可以添加一个后备路由,添加用于将失败的请求存储在数据库中的逻辑,然后返回404响应。例如,路线可能如下所示:
Route::fallback('RouteNotFoundController@store')
然后在您的控制器中,逻辑将类似于:
public function store(Request $request)
{
// Save request to database as required
abort(404)
}
添加abort
调用,它将引发异常并为您呈现404响应。
答案 1 :(得分:1)
您可以在variables
文件中进行编码:
searchByCustomerIdGraphQL() {
this.apollo.watchQuery({
query: findCustomerQuery,
variables: {id: this.customerIdValue}
})
.valueChanges.subscribe(...)
}