方法名称必须以findBy,findOneBy,countBy开头

时间:2019-06-03 14:37:14

标签: symfony

我有一个tryng命令来访问存储库方法。但是我不能成功。

  

services.yml

app.command.app_checkOfferDemand:
    class: AppRefactoredBundle\Command\CheckOfferAndDemand
    arguments: ['@doctrine.orm.entity_manager']
    tags:
        - { name: console.command }
  

app_OfferRepository

class app_OfferRepository extends \Doctrine\ORM\EntityRepository
{
    private function checkAndUpdate(){
        $em = $this->getContainer()->get('doctrine')->getManager();
        $qb = $em->createQueryBuilder();
        $q = $qb->update('app_Offer', 'o')
            ->set('o.status_id', 2)
            ->where('o.createdAt < DATE_SUB(NOW(), INTERVAL 2 HOUR)')
            ->getQuery();
        return  $q->execute();
    }
}
  

CheckOfferAndDemand

class CheckOfferAndDemand extends Command{

private $em;

public function __construct(EntityManager $em)
{
    parent::__construct();
    $this->em=$em;
}

protected function configure()
{
    // On set le nom de la commande
    $this->setName('app:check_OfferDemand');

    // On set la description
    $this->setDescription("Permet de controler le timeout des offres et demandes");

    // On set l'aide
    $this->setHelp("Cette commande ne prend pas d'argument et travailler sur toutes les offres et demandes");
}

public function execute(InputInterface $input, OutputInterface $output){
    $output->writeln("update des offres");
    $this->em->getRepository('AppRefactoredBundle:app_Offer')->checkAndUpdate();
    $output->writeln("update des demandes");
    $this->em->getRepository('AppRefactoredBundle:app_Demand')->checkAndUpdate();
    $this->em->flush();
    $output->writeln("DONE");

   }
}

该命令本身正在起作用(已进行第一次更新打印)。 但是随后会触发错误

  

未定义的方法'checkAndUpdate'。方法名称必须以findBy,findOneBy或countBy开头!

这些实体似乎也被很好地声明了

/**
 * app_Offer
 *
 * @ORM\Table(name="app__offer")
 * @ORM\Entity(repositoryClass="AppRefactoredBundle\Repository\app_OfferRepository")
 */
class app_Offer

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

无法访问您的存储库方法,因为它表示为private

更改

private function checkAndUpdate() {

public function checkAndUpdate() {