我在 PieceRepository 中实现了一个函数,但我无法使用它。在控制器中使用它时出现此错误:
未定义的方法“FindAllDetailsPieces”。方法名称必须以 findBy 或 findOneBy 开头!
这是我的ProductRepository
文件:
use Doctrine\ORM\EntityRepository;
class PieceRepository extends EntityRepository
{
public function FindAllDetailsPieces($reference)
{
$query = $this->getDoctrine()
->getManager()
->createQuery(
'SELECT p, c FROM AppBundle:Piece p
JOIN p.Media m
JOIN p.Caracteristique c
JOIN p.Fabricant f
WHERE p.idPiece = :reference'
)->setParameter('reference', $reference);
try {
return $query->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
}
这是我使用该方法的地方:
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$piece = new Piece(); //Ligne modifier
$formRef = $this->createForm(ReferenceType::class, $piece);
$formRef->handleRequest($request);
if ($formRef->isSubmitted() && $formRef->isValid()) {
$data = $formRef->get('reference')->getData();
var_dump($data);
$repository = $em->getRepository('AppBundle:Piece');
$RechPieces = $repository->FindAllDetailsPieces($data);
var_dump($RechPieces);
return $this->render('default/result_ref_search.html.twig', array(
'RechPieces' => $RechPieces
));
// return $this->redirectToRoute('result_ref_search');
}
我在实体类中添加注释
* @ORM\Entity(repositoryClass="AppBundle\Repository\PieceRepository")