Schedueled命令如何使用DB查询来正确获取数据库信息

在此项目中,用户可以彼此喜欢对方的照片,并且在某些时候(我还没有做过一份正式的工作),该项目应自动选择一个获胜者(这将是最受欢迎的照片)。

我在MySQL数据库中创建了一个表,该表存储喜欢该帖子的用户的post_iduser_id。在计划的命令中,我想获取在表中显示最多的post_id

我做了一个Laravel命令do:newwinner,并在其句柄函数中, 我首先直接在数据库中测试了查询,它的工作原理使我获得了所有帖子的列表,其中优胜者位居榜首。然后,我尝试在命令中实现该查询。但是当我尝试运行它时,它给了我错误。

这是我的do:newwinner命令中的handle函数

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 这是我收到的错误消息:

    ?[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
jingleee 回答:Schedueled命令如何使用DB查询来正确获取数据库信息

DB不在您当前的命名空间App\Console\Commands中。因此,您可以将其导入到顶部

use DB;

use Illuminate\Support\Facades\DB;

或在其前面加上反斜杠\DB::table(...)。这样可以解决未找到类的异常。

本文链接:https://www.f2er.com/3153352.html

大家都在问