Запланированная команда, как правильно получать информацию о базе данных с помощью запросов к БД - PullRequest
0 голосов
/ 06 ноября 2019

В этом проекте пользователям могут понравиться фотографии друг друга, и в определенное время (с заданием cron, которое я еще не сделал), проект должен автоматически выбрать победителя (это будет картинка с наибольшим количеством лайков).

Я создал таблицу в моей базе данных MySQL, в которой хранятся post_id и user_id пользователя, которому понравился пост. В запланированной команде я хотел бы получить post_id, который больше всего отображается в таблице.

Я сделал команду Laravel do:newwinner и в ее функции дескриптора я сначала проверил запрос непосредственно в моей БД, и он сработал, он дал мне список всех постов с победителем в начале списка. Затем я попытался реализовать этот запрос в моей команде. Но когда я пытался запустить его, он выдает мне ошибки.

Это функция дескриптора в моей команде do: newwinner

public function handle()
{
    echo "start job";
    $outcome = DB::select('select post_id, COUNT(post_id) from post_user group by post_id desc');
    echo " end job".$outcome;
}

Кроме того, импорт, который я использовал: use Illuminate\Database;

Я хочу иметь возможность извлекать победителя из моей базы данных каждый раз, чтобы сохранить его в таблице победителей в моей БД.

при запуске: php artisan do:newwinner это сообщение об ошибке Iполучить:

    ?[41;1m Symfony\Component\Debug\Exception\FatalThrowableError ?[49;22m : ?[33mClass 'App\Console\Commands\DB' not found?[39m

  at ?[32mD:\School\3de jaar\Development\web-development\CocaCola\app\Console\Commands\newWinner.php?[39m:?[32m44?[39m
    40|      */
    41|     public function handle()
    42|     {
    43|         echo "start job";
  > 44|         $outcome = DB::select('post_id,
COUNT(post_id) from post_user group by post_id desc');
    45|         echo " end job".$outcome;
    46|     }
    47| }
    48|

  ?[33mException trace:?[39m

  ?[36m1   ?[39m?[33mApp\Console\Commands\newWinner::handle()?[39m
      ?[32mD:\School\3de jaar\Development\web-development\CocaCola\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php?[39m:?[32m32?[39m

  ?[36m2   ?[39m?[33mcall_user_func_array([])?[39m
      ?[32mD:\School\3de jaar\Development\web-development\CocaCola\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php?[39m:?[32m32?[39m

  ?[32mPlease use the argument ?[39m?[31m-v?[39m?[32m to see more details.?[39m

1 Ответ

2 голосов
/ 06 ноября 2019

DB отсутствует в вашем текущем пространстве имен App\Console\Commands. Таким образом, вы можете импортировать его сверху

use DB;

или

use Illuminate\Support\Facades\DB;

или поставить перед ним обратную косую черту \DB::table(...). Это решает исключение класса не найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...