如何创建每 3 天从数据库中删除的 yii 高级控制台命令

How to create a yii advanced console command that delete from database every 3 days

在我的数据库中,我有 table 名称 post 并且有列名称 day 我想创建一个 yii2 高级控制台命令 删除 post我已经超过 3 天了,有人可以帮我吗?

我将为您提供一个命令示例,用于清理尚未确认电子邮件的用户的数据库。

<?php
namespace app\commands;
use app\models\User;
use yii\console\Controller;

class LimpiarController extends Controller
{

    public function actionIndex()
    {
        echo User::deleteAll(['and', 'confirmed_at is null', ['>', '(current_timestamp - to_timestamp(created_at))', '24 hours']]);
    }
}

你想要做的是,创建一个 Cron 作业来删除 post 超过 3 天的

第 1 步:在您的 console/controllers 目录中创建一个控制器,如下所示

<?php

namespace console\controllers;
use Yii;
use yii\console\Controller;
use yii\helpers\Console;

class CronController extends Controller {

    public function actionTest() {
        echo "Test cron job"; // your logic for deleting old post goes here
        exit();
    }
}

注意: CronController是controller的名字,action是test

第 2 步: 要 运行 您的名为 test 的 cron 作业,您需要在根目录中包含 yii 文件。 yii 文件代码如下所示

#!/usr/bin/env php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/console/config/bootstrap.php');

$config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/common/config/main.php'),
    require(__DIR__ . '/common/config/main-local.php'),
    require(__DIR__ . '/console/config/main.php'),
    require(__DIR__ . '/console/config/main-local.php')
);

$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);

注意: 确保您的 console/config 目录中包含所有必需的配置文件。

第 3 步:现在是时候 运行 你的 cron 作业了

在命令 prompt/terminal 中转到您的根目录并执行以下命令,您必须看到在测试操作中回显的消息。

 php yii cron/test

这里

  1. cron => 控制器名称

  2. 测试 => 动作名称