• 16-11-2020, 10:04:42
    #1
    merhabalar ufak bir soru sormak istiyorum size pdo ile alakalı.

    benim 2 adet tablom bulunmakta. bunlardan birisi Yazarlar Diğeri Kitaplar olsun

    Tablolarım şu şekilde olsun
    --------------------
    Yazarlar Tablosu
    id
    yazar_name
    --------------------
    
    Kitaplar Tablosu
    -------------------
    id
    kitap_name
    yazar_id
    ben şimdi 1 yazarı çekerken ona ait olan kitapları da almak istiyorum sorgum da şu şekilde olsun

     SELECT * FROM yazarlar as y JOIN kitaplar as k ON y.id = k.yazar_id WHERE y.id = 1
    diyelim.

    eğer o yazarın 3 adet kitabı varsa bana dönen 3 elemanlı bir array fakat ben şunu istiyorum bana tek bir array dönsün yazarı yani ama ekstradan altında bir bölüm açıp kitaplarıda versin yani şöyle bir şey

    $return = [
     'id' => 1,
    'yazar_name' => 'yazaradi',
    'kitaplar' => [
       // ne kadar kitap varsa listelensin.
    ]
    ]
    yukardaki şekilde bir çıktı almak için ne yapmalıyım ?

    bana dönen çıktı şu şekilde şuan

    $return = [
    [], // yazar ve 1. kitap detayları
    [], // yazar ve 2. kitap detayları
    [], // yazar ve 3. kitap detayları 
    ]
  • 16-11-2020, 10:07:49
    #2
    SELECT y.id, y.yazar_name, JSON_OBJECTAGG(k.id, k.kitap_name) as kitaplar FROM yazarlar as y JOIN kitaplar as k ON y.id = k.yazar_id WHERE y.id = 1 GROUP BY y.id

    $data = $st->fetch();
    $yazarid = $data['id'];
    $yazarname = $data['yazar_name'];
    $kitaplar = json_decode($data['kitaplar'], true);
    // ["1"=> "kitap_adi", "2"=> "kitap_adi_iki"] ..
  • 16-11-2020, 10:13:28
    #3
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    SELECT y.id, y.yazar_name, JSON_OBJECTAGG(k.id, k.kitap_name) as kitaplar FROM yazarlar as y JOIN kitaplar as k ON y.id = k.yazar_id WHERE y.id = 1 GROUP BY y.id

    $data = $st->fetch();
    $yazarid = $data['id'];
    $yazarname = $data['yazar_name'];
    $kitaplar = json_decode($data['kitaplar'], true);
    // ["1"=> "kitap_adi", "2"=> "kitap_adi_iki"] ..
    bu sorgu ile tek sorguda hem yazara hemde kitaplarına erişebilecek miyim? yani PDO::FETCH_OBJ dediğimde

    $data->id // dediğimde yazar idsi gelcek
    $data->kitaplar[2]->id dediğim de de kitap id si?
  • 16-11-2020, 10:16:27
    #4
    TekstilTurkiye adlı üyeden alıntı: mesajı görüntüle
    bu sorgu ile tek sorguda hem yazara hemde kitaplarına erişebilecek miyim? yani PDO::FETCH_OBJ dediğimde

    $data->id // dediğimde yazar idsi gelcek
    $data->kitaplar[2]->id dediğim de de kitap id si?
    evet, bu şekilde değil ama attığım gibi önce json_decode yapmanız gerekli
  • 16-11-2020, 10:17:37
    #5
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    evet, bu şekilde değil ama attığım gibi önce json_decode yapmanız gerekli
    json_decode yapmadan erişmek mümkün müdür peki? direkt olarak yani laravelde eloquent relationshiplerde böyle bir çıktı alabilmiştim bunu normal sql de nasıl yaparım diye düşünüyorum.
  • 16-11-2020, 10:18:24
    #6
    TekstilTurkiye adlı üyeden alıntı: mesajı görüntüle
    json_decode yapmadan erişmek mümkün müdür peki? direkt olarak yani laravelde eloquent relationshiplerde böyle bir çıktı alabilmiştim bunu normal sql de nasıl yaparım diye düşünüyorum.
    tek sql sorgusu ile mümkün değil