I'm working on a Symfony 4 project using Visual Studio Code with Intelephense.
Intelephense gets errors which aren't. There are some examples:
Undefined method 'uasort'.
This error corresponding to this code:
// Collection creation of seasons used in the periods
$seasons = new ArrayCollection();
$sortedSeasons = new ArrayCollection();
//Search seasons used by periods
foreach ($advert->getPeriods() as $period)
{
$season = $period->getSeason();
if (! $seasons->contains($season))
{
$seasons->add($season);
}
}
// Sort seasons by ascending cost
$iterator = $seasons->getIterator();
$iterator->uasort(function ($a, $b) {
return $a->getCost() <=> $b->getCost();
});
An other example:
Undefined method 'getAdvertMinPrice'.
$minPrices = $this->getDoctrine()->getRepository(Price::class)->getAdvertMinPrice($advert);
However, the method exists in the PriceRepository:
<?php
namespace App\Repository\advert;
use App\Entity\advert\Price;
use Symfony\Bridge\Doctrine\RegistryInterface;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
/**
* @method Price|null find($id, $lockMode = null, $lockVersion = null)
* @method Price|null findOneBy(array $criteria, array $orderBy = null)
* @method Price[] findAll()
* @method Price[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class PriceRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Price::class);
}
/**
* Get the minimum price from an advert
*
* @param [type] $advert
* @return Price[]
*/
public function getAdvertMinPrice($advert): array
{
return $this->createQueryBuilder('p')
->andWhere('p.price = (
SELECT MIN(p2.price)
FROM ' . $this->_entityName . ' p2
WHERE p2.advert = :val
)'
)
->setParameter('val', $advert)
->getQuery()
->getResult()
;
}
}
There is the Price name space:
<?php
namespace App\Entity\advert;
use App\Entity\advert\Advert;
use App\Entity\advert\Period;
use App\Entity\backend\Season;
use App\Entity\backend\Duration;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass="App\Repository\advert\PriceRepository")
*
* @UniqueEntity(
* fields={"duration", "season"},
* message="A price already exists for this season and this duration."
* )
*/
class Price
{
And the use command in the file where I have the problem:
<?php
namespace App\Controller\advert;
use App\Entity\backend\VAT;
use App\Entity\advert\Price;
I don't understand where is the problem. I have searched for days without result.
Somebody would have an idea about this problem origin?
Solved by uninstalling and reinstalling Visual Studio Code extensions.