WebHU - Programozási kérdések és válaszok

Symfony2 : Keressen több entitáson keresztül

Problémával szembesülök, miközben a Doctrine2-vel több entitás között keresek.

Van egy entitásom. Emberek csatlakoztak egy másik entitáshoz E-mail "OneToMany" kapcsolatban:

<?php
class People
{
  // ...
  /**
   * @ORM\OneToMany(targetEntity="Email", mappedBy="people")
   */
  protected $emails;
  // ...
}

class Email
{
  // ...
  /**
   * @ORM\ManyToOne(targetEntity="People", inversedBy="emails")
   * @ORM\JoinColumn(name="id", referencedColumnName="id")
   */
  protected $people;
}

A PeopleRepository-ban megpróbálok valami ilyesmit csinálni:

$queryBuilder = $this->_em->createQueryBuilder()
                  ->select('p')
                  ->from('MyBundle:People', 'p')
                  ->leftJoin('p.emails', 'e')
                  ->where('p.name LIKE :name')
                  ->andWhere('p.firstName LIKE :firstName')
                  ->andWhere('e.email LIKE :email')
                  ->setParameter('name', '%'.$name.'%')
                  ->setParameter('firstName', '%'.$firstName.'%')
                  ->setParameter('email', '%'.$email.'%');

De úgy tűnik, hogy az e-mail feltételt nem értelmezik. Szeretnék választ kapni a Személyek entitástól, amely megfelel annak az e-mail entitásnak, amelyhez kapcsolódik.

Nem tudom, elég világos-e, amit mondok.

De ha valaki megértette a problémámat, tudja, hogyan tehetném?

Köszönöm :)


Válaszok:


1

Abból, amit a kódodból látok, bal oldali csatlakozást végez

->from('MyBundle:People', 'p')
->leftJoin('p.emails', 'e')

tehát csak az ÖSSZES személy entitás szűrését adja vissza

->where('p.name LIKE :name')
->andWhere('p.firstName LIKE :firstName')

cserélje ki a leftJoin-t egy innerJoin-ra, amely megoldja a problémát.

Üdvözlettel, Christophe

22.08.2012
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..