在这个项目中,用户可以互相喜欢对方的图片,并且在某些时候(使用我尚未制作的 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;
}
此外,我使用的导入:
使用 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/