自我加入教义或:Symfony



我有一个用于日志的实体,我在其中保存应用程序错误记录,其中包含插入时间戳的字段。我的要求是清除从上次日志记录开始超过 10 天的条目。我的实体结构是这样的:

class MyacuvueLogs
{
    /**
     * @ORMId()
     * @ORMGeneratedValue()
     * @ORMColumn(type="integer")
     */
    private $id;
    /**
     * @ORMColumn(type="string", length=255, nullable=true)
     */
    private $mobile;
    /**
     * @ORMColumn(type="integer", nullable=true)
     */
    private $created;
    /**
     * @ORMColumn(type="string", length=255)
     */
    private $apiName;
    /**
     * @ORMColumn(type="string", length=255, nullable=true)
     */
    private $apiReqParams;
}

请帮忙。

我删除旧日志记录的代码如下:

public function getOldLog($max_time)
    {
        $remove_rows = $this->createQueryBuilder('p')
                            ->delete()
                            ->where('p.created < :createdBeforeLimitDate')
                            ->setParameter('createdBeforeLimitDate',$max_time-10*86400);
        return "deleted rows";
    }

但是,这是行不通的。

你有以下代码:

public function getOldLog($max_time)
{
    $remove_rows = $this->createQueryBuilder('p')
                        ->delete()
                        ->where('p.created < :createdBeforeLimitDate')
                        ->setParameter('createdBeforeLimitDate',$max_time-10*86400);
    return "deleted rows";
}

该代码不执行任何内容,因为您刚刚构建了一个查询并将其存储在变量中。 然后:什么都没有。

您必须调用 getQuerygetResult才能执行它:

public function getOldLog($max_time)
{
    $remove_rows = $this->createQueryBuilder('p')
                        ->delete()
                        ->where('p.created < :createdBeforeLimitDate')
                        ->setParameter('createdBeforeLimitDate', $max_time-10*86400)
                        ->getQuery()     // <- new
                        ->getResult();   // <- new
    return "deleted rows";
}

相关内容

  • 没有找到相关文章