symfony2.6使用doctrine和swift定制命令

时间:2015-01-13 14:59:54

标签: php symfony doctrine-orm kernel swiftmailer

尝试构建自定义命令。需要通过Doctrine从DB获取一些记录并通过SwiftMailer发送电子邮件。使用symfony 2.6.1。我有代码:

namespace MyBundle\Console\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;


class Raport extends ContainerAwareCommand
{
    protected function configure()
    {
        $this
            ->setName('raport:count-day')
            ->setDescription('test');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $em = $this->getContainer()->get('doctrine')->getManager();
        $em->getRepository('My:Application')->findAll();
        // $output->writeln($text);
    }
}

当我在控制台raport中运行命令时:count-day始终收到相同的错误

PHP Fatal error:  Call to undefined method Symfony\Component\Console\Application::getKernel() in /var/www/auto/pzu-voucher/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ContainerAwareCommand.php on line 42 ($this->container = $application->getKernel()->getContainer();)

有谁知道如何解决它?

2 个答案:

答案 0 :(得分:1)

我使用自定义应用程序来运行命令,在这里我做错了什么。当我通过app / console

运行它时,我的命令正常工作

抱歉

答案 1 :(得分:0)

我猜您应该关注Command documentation

  

使用Symfony自动使用控制台命令,   在您的包中创建一个 Command目录并创建一个PHP文件   对于您要提供的每个命令,后缀为Command.php

您的课程也应重命名为ReportCommand