• 18-07-2023, 09:34:42
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar,

    3 adet tablom var. birinci, ikinci, ucuncu diyelim.


    birinci tablom için oluşturduğum modelde şu şekilde hasMany ile ikinci tablom ile ilişki kurdum.

        public function ozelurunlerurunu(){
    
            return $this->hasMany(ikinci::class, 'urun_id', 'id');
    
        }
    ikinci tablomda ise bu ilişkinin kime ait olduğunu belirttim.

    public function urun_id(){
    
            return $this->belongsTo('App\Models\birinci');
    
        }
    Şimdi yapmak istediğim şey, ikinci tabloda yer alan urun_kodu ile ucuncu tabloda yer alan urun_kodu'nu birleştirip hepsinin tek bir dizide çıktı vermesini sağlamak. Konu ile ilgili yardımcı olacak arkadaşlara teşekkür ederim.
  • 18-07-2023, 09:43:34
    #2
    Öncelikle ilişkiler neye göre hasmany ve belongsto bunu belirtirseniz iyi olur. Eğer birinci tablonun her bir kaydının birden fazla ikinci tablo kaydı varsa hasmany doğru. İkinci tablodaki her bir kayıtta birinci tabloya bir tabloya aitse ilişkiler doğru. Ancak mantıksız oluyor. 3 tablodan da birer ekran görüntüsü atarsanız sorguda yardımcı olurum.
  • 18-07-2023, 09:55:24
    #3
    blap adlı üyeden alıntı: mesajı görüntüle
    Öncelikle ilişkiler neye göre hasmany ve belongsto bunu belirtirseniz iyi olur. Eğer birinci tablonun her bir kaydının birden fazla ikinci tablo kaydı varsa hasmany doğru. İkinci tablodaki her bir kayıtta birinci tabloya bir tabloya aitse ilişkiler doğru. Ancak mantıksız oluyor. 3 tablodan da birer ekran görüntüsü atarsanız sorguda yardımcı olurum.
    Öncelikle hızlı geri dönüşünüz için teşekkür ederim. Söylediğiniz gibi ikinci tabloda birden fazla kaydı var. Yani birinci tablodaki id, ikinci tabloda urun_id olarak birden fazla yerde kullanılıyor. 3. tabloda ise ilişkilendirmek istediğim 2. tablonun urun_kodu ile 3. tablonun urun_kodu, 3. tabloda bir ürün kodundan 1 tane var. Umarım açıklayıcı olmuştur. Ekran görüntüleri ise aşağıdaki gibidir ;




    İkinci tablo



    Üçüncü tablo

  • 18-07-2023, 10:19:59
    #4
    Şu sorgu işinizi görecektir. Ancak üçüncü tabloda ilişki adını urun_id yerine mesela bigpoint yapın. Sonra aşağıdaki sorguyu çalıştırın.

    $kodlar = Birinci::with('ozelurunlerurunu.bigpoint')->select('urun_kodu')->get();
    
    return $kodlar;
  • 18-07-2023, 10:41:04
    #5
    blap adlı üyeden alıntı: mesajı görüntüle
    Şu sorgu işinizi görecektir. Ancak üçüncü tabloda ilişki adını urun_id yerine mesela bigpoint yapın. Sonra aşağıdaki sorguyu çalıştırın.

    $kodlar = Birinci::with('ozelurunlerurunu.bigpoint')->select('urun_kodu')->get();
    
    return $kodlar;
    Tekrardan dönüşünüz için teşekkür ederim. Sütun bulunamadı hatası alıyorum. Her bir model dosyasını aşağıda paylaşacağım. Öncelikle hatadan başlayayım ;

    select * from `ozelurunler` inner join `ozelurunlerurunu` on `ozelurunlerurunu`.`urun_kodu` = `bigpoint`.`urun_kodu`
    OzelUrunler Model ;

            public function ozelurunlerurunu(){
    
                return $this->hasMany(OzelUrunlerUrunu::class, 'urun_id', 'id');
    
            }
    OzelUrunlerUrunu Model

        public function urun_id(){
    
            return $this->belongsTo('App\Models\OzelUrunler');
    
        }
    
        public function bigpointUrunler(){
    
            return $this->hasOne(BigPoint::class, 'urun_kodu', 'urun_kodu');
    
    
        }

    Bigpoint Model

        public function bigpoint(){
    
            return $this->belongsTo('App\Models\OzelUrunlerUrunu');
    
        }
  • 18-07-2023, 10:47:06
    #6
    Hocam çorba yapmışsınız. urun_id fonksiyonunu silin. Onun adını bigpoint yapın. sonra aşağıdaki kodu çalıştırın. Mümkün olduğunca veritabanında ve kodlarda her türkçe isimler kullanmayın.

    $kodlar = Birinci::with('ozelurunlerurunu.bigpoint')->get();
     
    return $kodlar;