У меня есть простой кусок кода, который отслеживает каждый раз, когда вызывается определенный маршрут, но я замечаю, что он как-то добавляет 2 посещения, когда он запускается, а не только 1. Это только тогда, когда посетитель вошел в системуПользователь, как гость он работает нормально. Почему?
Модель страницы, содержащая код для подсчета запросов маршрута.
class Page extends Model
{
/**
* Find the correct page for the given route name or create a placeholder and increase visit count
*
* @param string $name
* @return App\Models\Page
*/
public static function findOrNewAndCount($name)
{
$page = self::where('name', $name)->first();
// If no Page can be found, create a new one for the given route.
if ($page == null) {
$page = new Page;
$page->name = $name;
$page->section = 'missing';
$page->save();
}
// Increase visit_count by 1
$page->visit_count = $page->visit_count + 1;
$page->last_visit_at = now();
$page->save();
return $page;
}
}
Использование функции в контроллере
class AboutUsController extends Controller
{
/** Show business details page.
*
* @return \Illuminate\Http\Response
*/
public function details()
{
$page = Page::findOrNewAndCount('about_us.details');
return view('about_us/details', compact('page'));
}
}
Вызываемый маршрут
Route::get('about_us/details', 'AboutUsController@details')->name('about_us.details');
Чего я действительно не понимаю, так это того, почему он даже отличается между зарегистрированными пользователями и гостями, где для этого маршрута не используется промежуточное программное обеспечение.
Существует некоторая роль пользователя и проверка прав доступа, выполняемая дляпанель навигации, но это не должно приводить к тому, что этот конкретный маршрут будет вызываться дважды, верно?