Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba örnek olarak şöyle ifade etmeye çalışayım 2 tablo var 1. tablo bir ara tablo doktor ve kliniklerin eşleştirildiği bir tabloç klinikleri vergi numarasından doktorları diploma numarasından filtreliyoruz. 1. tabloda unique olarak vergi numarası ancak aynı vergi numarası üzerine birden fazla diploma numarası olabilir. 2. tabloda ise unique olan diploma numarası ve içerisinde doktora ait bilgiler paylaşılıyor. Şimdi ben sorguda vergi numarasını gönderip 1. tabloda ilgili kliniği buluyor ve bunun üzerine kayıtlı doktorların bilgilerini 2. tablodan çekmek istiyorum. yapıyorum da ancak tekrarlı veri geliyor. Şu şekilde ;

"data": [
        {
            "id": 5,
            "pol_vergi_no": "1232123222",
            "d_diploma_no": "1234567894",
            "mesai_baslangic": null,
            "mesai_bitis": "2024-01-13",
            "is_active": 0,
            "created_at": "2024-01-12T19:04:06.000000Z",
            "updated_at": "2024-01-13T19:38:42.000000Z",
            "doktor_bilgileri": {
                "id": 8,
                "d_adi": "ttt",
                "d_soyadi": "ttt",
                "d_diploma_no": 1234567894,
                "pol_vergi_no": "1232123222",
                "cinsiyet": "E",
                "d_tel": "04444444444",
                "email": "ttdt@fff.com",
                "d_resim": "http://res.cloudinary.com/dxrgehpzq/image/upload/v1703364715/msmxyjeovjm3nj4drfhq.jpg",
                "d_adres": "ddwd",
                "mezuniyet": "Ağrı İbrahim Çeçen Üniversitesi",
                "d_unvan": "ff",
                "mezuniyet_tarihi": "2023-12-07",
                "created_at": "2023-12-23T20:51:56.000000Z",
                "updated_at": "2023-12-23T20:51:56.000000Z"
            }
        },
        {
            "id": 6,
            "pol_vergi_no": "1232123222",
            "d_diploma_no": "7418529630",
            "mesai_baslangic": null,
            "mesai_bitis": null,
            "is_active": 1,
            "created_at": "2024-01-12T19:05:19.000000Z",
            "updated_at": "2024-01-12T19:05:19.000000Z",
            "doktor_bilgileri": {
                "id": 13,
                "d_adi": "adnan",
                "d_soyadi": "Kantarcı",
                "d_diploma_no": 7418529630,
                "pol_vergi_no": "2112724859",
                "cinsiyet": "E",
                "d_tel": "04518568574",
                "email": "adnkntrci@gmail.com",
                "d_resim": "...",
                "d_adres": "Erzurum",
                "mezuniyet": "Atatürk",
                "d_unvan": "implant uzmanı",
                "mezuniyet_tarihi": "2010-04-06",
                "created_at": "2024-01-01T11:28:48.000000Z",
                "updated_at": "2024-01-01T11:50:22.000000Z"
            }
        },

Ancak benim olmasını istediğim şekli şu;
"data": [
        {
            "id": 5,
            "pol_vergi_no": "1232123222",
            "d_diploma_no": "1234567894",
            "mesai_baslangic": null,
            "mesai_bitis": "2024-01-13",
            "is_active": 0,
            "created_at": "2024-01-12T19:04:06.000000Z",
            "updated_at": "2024-01-13T19:38:42.000000Z",
            "doktor_bilgileri": {
{
                "id": 8,
                "d_adi": "ttt",
                "d_soyadi": "ttt",
                "d_diploma_no": 1234567894,
                "pol_vergi_no": "1232123222",
                "cinsiyet": "E",
                "d_tel": "04444444444",
                "email": "ttdt@fff.com",
                "d_resim": "http://res.cloudinary.com/dxrgehpzq/image/upload/v1703364715/msmxyjeovjm3nj4drfhq.jpg",
                "d_adres": "ddwd",
                "mezuniyet": "Ağrı İbrahim Çeçen Üniversitesi",
                "d_unvan": "ff",
                "mezuniyet_tarihi": "2023-12-07",
                "created_at": "2023-12-23T20:51:56.000000Z",
                "updated_at": "2023-12-23T20:51:56.000000Z"
            },
        {
                "id": 13,
                "d_adi": "adnan",
                "d_soyadi": "Kantarcı",
                "d_diploma_no": 7418529630,
                "pol_vergi_no": "2112724859",
                "cinsiyet": "E",
                "d_tel": "04518568574",
                "email": "adnkntrci@gmail.com",
                "d_resim": "...",
                "d_adres": "Erzurum",
                "mezuniyet": "Atatürk",
                "d_unvan": "implant uzmanı",
                "mezuniyet_tarihi": "2010-04-06",
                "created_at": "2024-01-01T11:28:48.000000Z",
                "updated_at": "2024-01-01T11:50:22.000000Z"
            },

Bunu nasıl yapabilirim yardımcı olursanız sevinirim.

    Brskrkmz Kurduğunuz ilişkileri paylaşırsanız daha iyi olur.

    @"mgsmus"#p45364 <?phpclass pol_dok extends Model
    {

    protected $fillable = [
        'id',
        'pol_vergi_no',
        'd_diploma_no',
        'is_active',
        'mesai_baslangic',
        'mesai_bitis',
        'created_at',
        'updated_at',
    ];
     
    public function doktorBilgileri()
    {
        return $this->hasOne(t_doktor_uye::class,'d_diploma_no', 'd_diploma_no');
    }

    }`
    Yukarısı model için ve aşağısı da controllerde ki kod

    `public function doktorListesi(Request $request){
    try {
    if (empty($request->pol_vergi_no)) {
    return response()->json([
    'message' => 'Lütfen vergi numarası giriniz.',
    'status' => 400
    ]);
    }
    $doktorListesi = pol_dok::with('doktorBilgileri')
    ->where('pol_vergi_no',$request->pol_vergi_no)
    ->get();


            if (empty($doktorListesi)) {
                return response()->json([
                    'message' => 'Doktor kaydı bulunamadı.',
                    'status' => 400
                ]);
            }
            $formattedData = $doktorListesi->map(function ($doktor) {
                return [
                    'pol_vergi_no' => $doktor->pol_vergi_no,
                    'd_diploma_no' => $doktor->d_diploma_no,
                    'mesai_baslangic' => $doktor->mesai_baslangic,
                    'mesai_bitis' => $doktor->mesai_bitis,
                    'doktor_bilgileri' => $doktor->doktorBilgileri
                ];
            });
        
            return response()->json([
                'data' => $formattedData,
                'status' => 201
            ]);
        } catch (\Throwable $th) {
            return Response()->json([
                'message' => 'HATA:'  . $th->getMessage(),
                'status' => 500
            ]);
        }
    }`

    kodun bazı yerini kod olarak almadı

      Brskrkmz Burada şöyle bir sorun var. Gelen pol_dok kayıtlarında gördüğüm kadarıyla tek ortak yer pol_vergi_no. Diğer yerler pol_vergi_no aynı olsa bile farklı olma durumu var. Siz ise gruplamak istiyorsunuz, belirsizlik doğuyor. Bu durumda ya ilk/son kaydın bilgilerini alacaksınız ya da sadece pol_vergi_no alacaksınız. Şöyle olabilir:

      $doktorListesi = pol_dok::with('doktorBilgileri')
          ->where('pol_vergi_no', $request->input('pol_vergi_no'))
          ->get()
          ->groupBy('pol_vergi_no')
          ->map(function ($group) {
              $first = $group->first(); // Belirsizlik olduğu için ben ilk kaydı alıyorum
      
              return [
                  'pol_vergi_no' => $first->pol_vergi_no,
                  'doktor_bilgileri' => $group->pluck('doktor_bilgileri'),
              ];
          })
          ->values()
          ->all();

      Bu da size şöyle bir sonuç verir:

      [
        {
          "pol_vergi_no": "1232123222",
          "doktor_bilgileri": [
            {
              "id": 8,
              "d_adi": "ttt",
              "d_soyadi": "ttt",
              ...
            },
            {
              "id": 13,
              "d_adi": "adnan",
              "d_soyadi": "Kantarcı",
              ...
            }
          ]
        }
      ]

        mgsmus
        İlginiz için teşekkür ederim.
        Çok yaklaştık ama boş veri dönüyor. Aşağıda nul yazanlardan her biri bir alt dizi alup her birinin içerisinde doktora ait bilgiler olması gerekirdi. Ancak sadece null veri dönmüş.
        "data": [
        {
        "pol_vergi_no": "1232123222",
        "doktor_bilgileri": [
        null,
        null,
        null,
        null,
        null,
        null
        ]
        }
        ],
        "status": 201
        }

          Brskrkmz
          `
          $doktorListesi = t_pol_uye::find($request->pol_vergi_no);


                  if (empty($doktorListesi)) {
                      return response()->json([
                          'message' => 'Doktor kaydı bulunamadı.',
                          'status' => 400
                      ]);
                  }
                  $data = $doktorListesi->doktorBilgileri;
                  return response()->json([
                      'data' => $data,
                      'status' => 201
                  ]);`

          Bu ve;
          public function doktorBilgileri(){
          return $this->belongsToMany(t_doktor_uye::class, 'pol_doks', 'pol_vergi_no', 'd_diploma_no');
          }
          bunun ile
          "data": [
          {
          "id": 8,
          "d_adi": "ttt",
          "d_soyadi": "ttt",
          "d_diploma_no": 1234567894,
          "pol_vergi_no": "1232123222",
          "cinsiyet": "E",
          "d_tel": "04444444444",
          "email": "ttdt@fff.com",
          "d_resim": "http://res.cloudinary.com/dxrgehpzq/image/upload/v1703364715/msmxyjeovjm3nj4drfhq.jpg",
          "d_adres": "ddwd",
          "mezuniyet": "Ağrı İbrahim Çeçen Üniversitesi",
          "d_unvan": "ff",
          "mezuniyet_tarihi": "2023-12-07",
          "created_at": "2023-12-23T20:51:56.000000Z",
          "updated_at": "2023-12-23T20:51:56.000000Z",
          "pivot": {
          "pol_vergi_no": "1232123222",
          "d_diploma_no": "1234567894"
          }
          },
          {
          "id": 11,
          "d_adi": "Adil",
          "d_soyadi": "Katırcı",
          "d_diploma_no": 7418529632,
          "pol_vergi_no": "1232123222",
          "cinsiyet": null,
          "d_tel": null,
          "email": "kmluzn@gmail.com",
          "d_resim": null,
          "d_adres": null,
          "mezuniyet": null,
          "d_unvan": null,
          "mezuniyet_tarihi": null,
          "created_at": "2023-12-27T19:51:29.000000Z",
          "updated_at": "2023-12-27T19:51:29.000000Z",
          "pivot": {
          "pol_vergi_no": "1232123222",
          "d_diploma_no": "7418529632"
          }
          },
          {
          "id": 13,
          "d_adi": "adnan",
          "d_soyadi": "Kantarcı",
          "d_diploma_no": 7418529630,
          "pol_vergi_no": "2112724859",
          "cinsiyet": "E",
          "d_tel": "04518568574",
          "email": "adnkntrci@gmail.com",
          "d_resim": "...",
          "d_adres": "Erzurum",
          "mezuniyet": "Atatürk",
          "d_unvan": "implant uzmanı",
          "mezuniyet_tarihi": "2010-04-06",
          "created_at": "2024-01-01T11:28:48.000000Z",
          "updated_at": "2024-01-01T11:50:22.000000Z",
          "pivot": {
          "pol_vergi_no": "1232123222",
          "d_diploma_no": "7418529630"
          }
          },
          böyle bir sonuç elde ettim umarım işe yarar bir sonuç olmuştur.