mysql - 计划命令如何使用DB查询正确获取数据库信息

标签 mysql laravel select scheduled-tasks

在这个项目中,用户可以互相喜欢对方的图片,并且在某些时候(使用我尚未制作的 cron 作业)该项目应该自动选择一个获胜者(这将是获得最多喜欢的图片)。

我在 MySQL 数据库中创建了一个表,用于存储喜欢该帖子的用户的 post_iduser_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;
}

此外,我使用的导入: 使用 Illuminate\Database;

我希望每次都能从数据库中提取获胜者,以便将其存储在数据库的获胜者表中。

运行时: php 工匠做: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

最佳答案

DB 不在您当前的命名空间 App\Console\Commands 中。所以你可以在顶部导入它

use DB;

use Illuminate\Support\Facades\DB;

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

关于mysql - 计划命令如何使用DB查询正确获取数据库信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58727374/

相关文章:

laravel - 如何从Google Analytics(分析)4获取 View ID?

javascript - 由于 laravel Blade 花括号 "{{ }}",无法从数据库中过滤数据

在 ember 中选择不加载数据 - 有工作示例吗?

mysql - 将 select 语句转换为更新(包括 exists & having)

mysql - 连接两个表以替换第二个表中的新值(如果存在)

mysql - MS SQL存储过程中execute ('select * from tablename')有什么用

mysql - Rails 应用程序的 utf8mb4 字符集

c# - 在 C# 中运行更新查询后数据库没有变化

javascript - 如何通过将鼠标悬停并单击 <ul> 元素中的 <li> 元素来选择它们

php - Laravel ID 不匹配