命令文件中的值可为空



>我实际上正在做一个symfony项目,我必须进入数据库所有出租车,并提供一些关于它们的信息,并使它们写入CSV文件。

为此,我创建了一个 CiblageCommand 文件:

<?php
namespace AppBundleCommand;
use AppBundleEntityTaxi;
use AppBundleEntityStatutTaxi;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use DoctrineORMEntityManagerInterface;
use SymfonyComponentConsoleStyleSymfonyStyle;
use SymfonyBundleFrameworkBundleCommandContainerAwareCommand;
class CiblageCommand extends ContainerAwareCommand
{
private $em;
public function __construct(EntityManagerInterface $em)
{
parent::__construct();
$this->em = $em;
}
protected function configure()
{
$this
//the short description shown while running "php bin/console list"
->setDescription('cible les taxis')
//commande
->setname('ciblage')//php bin/console ciblage
//the full command descriptionn shown when running the command with
//the "--help" option
->setHelp('Cette commande permet de cibler les taxis valides présents'
.' dans la BDD et de leur générer un PDF conforme.')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$io = new SymfonyStyle($input, $output);
$io->title("Lancement de la génération");
$io->title("nListage des taxis");
$this->create();/*
$io->title("nCiblage terminé");
$io->title("nGénération des courriers");
$this->generation();
*/
$io->success("nGénération terminée");
}
protected function create()
{
$repository_taxi = $this->em->getRepository('AppBundle:Taxi');
$listTaxi = $repository_taxi->findAll();
$doctrine = $this->getContainer()->get('doctrine');
$em = $doctrine->getEntityManager();
$handle = fopen('CSVTaxi', 'w+');
fputcsv($handle, ['IDENTIFIANT', 'RAISON SOCIALE', 'STATUT', 'ETAT'], ';');
foreach ($listTaxi as $taxi)
{   
if($taxi == null){
$listTaxi[$taxi] = "NULL" ;
}
fputcsv(
$handle,
[
$taxi->getNumAm(),
$taxi->getRaisonSociale(),
$taxi->getStatutTaxi()->getLibelleStatut(),
$taxi->getEtatTaxi()->getLibelleEtat()],
';'
);
}
fclose($handle);
echo("nbr taxi : ".count($listTaxi)."n");
}
}

但是,当我尝试执行">getStatutTaxi(("时,值返回为空,尽管之前有if,但我无法写入文件。

有我的终端给我的错误

[apl4e04@l11750300app2dev 10:23:23] [~/web/html/scot] $ php bin/console ciblage
Lancement de la génération
==========================

Listage des taxis
==================
10:17:16 ERROR     [console] Error thrown while running command "ciblage". Message: "Call to a 
member function getLibelleStatut() on null" ["exception" => Error { …},"command" => 
"ciblage","message" => "Call to a member function getLibelleStatut() on null"]
PHP Fatal error:  Uncaught SymfonyComponentDebugExceptionFatalThrowableError: Call to a member 
function getLibelleStatut() on null in 
/app/apl4e04/web/html/scot/src/AppBundle/Command/CiblageCommand.php:74
Stack trace:
#0 /app/apl4e04/web/html/scot/src/AppBundle/Command/CiblageCommand.php(44): 
AppBundleCommandCiblageCommand->create()#1/app/apl4e04/web/html/scot/vendor/
symfony/symfony/src/Symfony/Component/Console/Command/Command.php(255): 
AppBundleCommandCiblageCommand->execute(Object(SymfonyComponentConsoleInputArgvInput), 
Object(SymfonyComponentConsoleOutputConsoleOutput))
#2 /app/apl4e04/web/html/scot/vendor/symfony/symfony/src/Symfony/
Component/Console/Application.php(987): SymfonyComponentConsoleCommandCommand- 
>run(Object(SymfonyComponentConsoleInputArgvInput), 
Object(SymfonyComponentConsoleOutputConsoleOutput))
#3/app/apl4e04/web/html/scot/vendor/symfony/symfony/
src/Symfony/Bundle/FrameworkBundle/Console/Application 
.php(86): SymfonyComponentConsoleApplication->doRunCommand(Object(AppBundl in 
/app/apl4e04/web/html/scot/src/AppBundle/Command/CiblageCommand.php on line 74

我该如何解决这个问题并使其工作?

提前感谢您的帮助。 亲切

我们可以通过在添加到 csv 文件之前检查值实例来解决此问题。

$statusLibelleStatut = $taxi->getStatutTaxi() instance of StatutTaxi ? $taxi->getStatutTaxi()->getLibelleStatut() : '';
$etatLibelleEtat = $taxi->getEtatTaxi() instance of LibelleEtat ? $taxi->getEtatTaxi()->getLibelleEtat() : '';
fputcsv(
$handle,
[
$taxi->getNumAm(),
$taxi->getRaisonSociale(),
$statusLibelleStatut,
$etatLibelleEtat],
';'
);

更新:我只是在我的">getLibelleStatut((">中添加了一个三元函数来解决问题。

protected function create()
{
$repository_taxi = $this->em->getRepository('AppBundle:Taxi');
$listTaxi = $repository_taxi->findAll();
//$doctrine = $this->getContainer()->get('doctrine');
//$em = $doctrine->getEntityManager();
$handle = fopen('CSVTaxi.csv', 'w+');
fputcsv($handle, [' IDENTIFIANT', 'RAISON SOCIALE', 'STATUT', 'ETAT'], ';');
foreach ($listTaxi as $taxi)
{
fputcsv(
$handle,
[
$taxi->getNumAm(),
$taxi->getRaisonSociale(),
($taxi->getStatutTaxi()==null)?"":$taxi->getStatutTaxi()->getLibelleStatut(),
$taxi->getEtatTaxi()->getLibelleEtat()],
';'
);
}
fclose($handle);
echo("nbr taxi : ".count($listTaxi)."n");
}

相关内容

  • 没有找到相关文章

最新更新