Nano Hash - криптовалюты, майнинг, программирование

Создание просмотров страниц с помощью Laravel 5.8

Я пытаюсь создать счетчик просмотров страниц для своего рецепта в Laravel. Я использовал этот пост SO в качестве руководства: Подсчет просмотров страниц с помощью Laravel

Однако, когда я пытаюсь получить доступ к своим рецептам, это дает мне ошибку 404. Может кто-нибудь посмотреть и посмотреть, что происходит не так? Благодарю вас!

Миграция

Schema::create('recipe_views', function (Blueprint $table) {
            $table->increments('id');

            $table->unsignedInteger("recipe_id");
            $table->string("titleslug");
            $table->string("url");
            $table->string("session_id");
            $table->unsignedInteger('user_id')->nullable();
            $table->string("ip");
            $table->string("agent");
            $table->timestamps();
        });

Модель

class RecipeView extends Model
{
    public static function createViewLog($recipe) {
        $recipeViews= new RecipeView();
        $recipeViews->listing_id = $recipe->id;
        $recipeViews->url = \Request::url();
        $recipeViews->session_id = \Request::getSession()->getId();
        $recipeViews->user_id = (\Auth::check())?\Auth::id():null;
        $recipeViews->ip = \Request::getClientIp();
        $recipeViews->agent = \Request::header('User-Agent');
        $recipeViews->save();
    }
}

Контроллер рецептов

public function show($id)
    {
        $recipeView = RecipeView::where('id', '=' ,$id)->firstOrFail();
        RecipeView::createViewLog($recipeView);

        $recipe = Recipe::find($id);
        $ingredients = explode("\n", $recipe->ingredients);
        $directions = explode("\n", $recipe->directions);

        return view('recipes.show')->with('recipe', $recipe)->with('directions', $directions)->with('ingredients', $ingredients);
    }

Маршрут

Route::resource('/recipes', 'RecipesController');

Был бы очень признателен за помощь в этом. Я немного потерялся в том, что я делаю неправильно. Спасибо!

21.04.2019

  • В Recipe Controller - можете ли вы изменить firstOrFail(); сначала(); и запишите результат через dd($recipeView); (Вы можете показать мне файл маршрута?) 22.04.2019
  • похоже это ошибка маршрута 22.04.2019
  • @KoenHollander, маршрут, который у меня есть для рецептов, - это ресурсный маршрут, я добавил его к вопросу. В списке маршрутов есть recipes/{recipe} под маршрутом show, где {recipe} — идентификатор рецепта. dd($recipeView) возвращает ноль 22.04.2019
  • Вы можете увидеть, произошла ли вставка в БД? Можете ли вы попробовать использовать -›all() вместо firstOrFail()? 22.04.2019
  • @DanishHakimKhan говорит мне, что -›all() — это вызов неопределенной функции. Есть идеи, почему? Вставки в БД не было.. 22.04.2019
  • Если в БД нет сохранений, то как вы можете получить? Вы упомянули выше, что dd($recepieView) возвращает null, это означает, что запись не найдена. И затем вы передаете null в модель, чтобы сохранить некоторые данные в ViewLog, так что определенно этого не будет, потому что идентификатор, который вы пытаетесь просмотреть, отсутствует в БД. Поставьте галочку в контроллере if(!$recipeView-›isEmpty){ RecipeView::createViewLog($recipeView); } еще { дд('не найдено'); таким образом вы получите вывод о том, что происходит 22.04.2019
  • @DanishHakimKhan эта проверка не дает мне информации о том, что происходит, она снова дает мне страницу 404. Я знаю, что это не работает. Вот почему я разместил вопрос. Я не могу получить его. 22.04.2019

Ответы:


1

Вы можете проверить, работает ли ваш /index.php/recipes?

Если да, вам нужно исправить, выполнив следующие шаги.

  1. В терминале используйте следующие команды:

$ sudo a2enmod переписать

  1. Измените AllowOverride в файле конфигурации apache:

$ судо нано /etc/apache2/apache2.conf

Измените AllowOverride с «Нет» на «Все» в этом блоке.

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
  1. Наконец, перезапустите apache2

$ sudo service apache2 перезапустить

22.04.2019

2

Вам нужно указать имя функции + переменную в вашем маршруте. В вашем случае показать()

resource('/recipes/{id}', 'RecipesController@show');
22.04.2019
  • Это ресурсный маршрут. Мне не нужно определять это. Laravel делает это под капотом 22.04.2019
  • Это точно проблема с маршрутом. Проверьте это дважды. 22.04.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..