• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Doctrine - Relacje - createquerybuilder

VPS Starter Arubacloud
0 głosów
273 wizyt
pytanie zadane 2 kwietnia 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 4 kwietnia 2019 przez hiper007

Witam ;)

Mam dwie Encje:

-Kierowcy

class Kierowcy
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $Imie;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $Nazwisko;

    /**
     * @ORM\Column(type="integer")
     */
    private $Wiek;

    /**
    * @ORM\OneToMany(targetEntity="Samochody", mappedBy="Ownerid")
    */
    private $Autaid;

    public function __construct()
    {
        $this->Autaid = new ArrayCollection();
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getImie(): ?string
    {
        return $this->Imie;
    }

    public function setImie(string $Imie): self
    {
        $this->Imie = $Imie;

        return $this;
    }

    public function getNazwisko(): ?string
    {
        return $this->Nazwisko;
    }

    public function setNazwisko(string $Nazwisko): self
    {
        $this->Nazwisko = $Nazwisko;

        return $this;
    }

    public function getWiek(): ?int
    {
        return $this->Wiek;
    }

    public function setWiek(int $Wiek): self
    {
        $this->Wiek = $Wiek;

        return $this;
    }

    /**
     * @return Collection|Samochody[]
     */
    public function getAutaid(): Collection
    {
        return $this->Autaid;
    }

    public function addAutaid(Samochody $autaid): self
    {
        if (!$this->Autaid->contains($autaid)) {
            $this->Autaid[] = $autaid;
            $autaid->setOwnerid($this);
        }

        return $this;
    }

    public function removeAutaid(Samochody $autaid): self
    {
        if ($this->Autaid->contains($autaid)) {
            $this->Autaid->removeElement($autaid);
            // set the owning side to null (unless already changed)
            if ($autaid->getOwnerid() === $this) {
                $autaid->setOwnerid(null);
            }
        }

        return $this;
    }
}

-Samochody

class Samochody
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $Marka;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $Model;

    /**
     * @ORM\Column(type="date")
     */
    private $Produkcja;

    /**
     * @ORM\Column(type="string", length=100)
     */
    private $Komentarz;

    /**
     * @ORM\Column(type="integer")
     */
    private $Usterka;
    
    /**
     * @ORM\Column(type="integer", nullable=true)
     */

    /**
    * @ORM\ManyToOne(targetEntity="Kierowcy", inversedBy="Autaid")
    */
    private $Ownerid;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getMarka(): ?string
    {
        return $this->Marka;
    }

    public function setMarka(string $Marka): self
    {
        $this->Marka = $Marka;

        return $this;
    }

    public function getModel(): ?string
    {
        return $this->Model;
    }

    public function setModel(string $Model): self
    {
        $this->Model = $Model;

        return $this;
    }

    public function getProdukcja(): ?\DateTimeInterface
    {
        return $this->Produkcja;
    }

    public function setProdukcja(\DateTimeInterface $Produkcja): self
    {
        $this->Produkcja = $Produkcja;

        return $this;
    }

    public function getKomentarz(): ?string
    {
        return $this->Komentarz;
    }

    public function setKomentarz(?string $Komentarz): self
    {
        $this->Komentarz = $Komentarz;

        return $this;
    }

     public function getUsterka(): ?int
    {
        return $this->Usterka;
    }

    public function setUsterka(int $Usterka): self
    {
        $this->Usterka = $Usterka;

        return $this;
    }

    public function getOwnerid(): ?int
    {
        return $this->Ownerid;
    }

    public function setOwnerid(?int $Ownerid): self
    {
        $this->Ownerid = $Ownerid;

        return $this;
    }
}

Relacja Samochody.php

 /**
    * @ORM\ManyToOne(targetEntity="Kierowcy", inversedBy="Autaid")
    */
    private $Ownerid;

Relacja Kierowcy.php

/**
    * @ORM\OneToMany(targetEntity="Samochody", mappedBy="Ownerid")
    */
    private $Autaid;

Tworzę zapytanie za pomocą metody createquerybuilder

 public function queryOwner5()
    {
        return $this->createQueryBuilder('k')
            ->select('k.Imie','k.Nazwisko','k.Wiek','s.Marka','s.Model')
            ->innerJoin('App\Entity\Samochody','s','WITH','k.id=s')
            ->getQuery()
            ->getResult()
        ;
    }

Oto tabele:

Jak robie zapytanie w sqlu:

SELECT kierowcy.Imie,kierowcy.Nazwisko,kierowcy.Wiek,samochody.Marka,samochody.Model FROM kierowcy INNER JOIN samochody ON kierowcy.id=samochody.Ownerid;

to wynik jest prawidłowy:

jak zrobie createquerybuilder:

 public function queryOwner5()
    {
        return $this->createQueryBuilder('k')
            ->select('k.Imie','k.Nazwisko','k.Wiek','s.Marka','s.Model')
            ->innerJoin('App\Entity\Samochody','s','WITH','k.id=s')
            ->getQuery()
            ->getResult()
        ;
    }

To wychodzi wynik, ale niepoprawny:

Gdzie może znajdować się błąd??

Z góry dzięki ;)

 

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

+1 głos
odpowiedź 2 kwietnia 2019 przez Ubermade Bywalec (2,020 p.)
wybrane 4 kwietnia 2019 przez hiper007
 
Najlepsza
public function queryOwner5()
   {
       return $this->createQueryBuilder('k')
           ->select('k.Imie','k.Nazwisko','k.Wiek','s.Marka','s.Model')
           ->innerJoin('App\Entity\Samochody','s',Query\Expr\Join::WITH,'k.id=s')
           ->getQuery()
           ->getResult()
       ;
   }

Spróbuj w taki sposób - przynajmniej mi tak działa ;)

komentarz 2 kwietnia 2019 przez Ubermade Bywalec (2,020 p.)
poza tym, nie powinno być s.id?

Podobne pytania

0 głosów
1 odpowiedź 310 wizyt
pytanie zadane 9 lipca 2019 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 322 wizyt
pytanie zadane 20 sierpnia 2017 w PHP przez marcin99b Szeryf (81,480 p.)
0 głosów
0 odpowiedzi 242 wizyt
pytanie zadane 22 marca 2019 w PHP przez mordimer Mądrala (5,720 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...