Giriş yapmadınız.

#1 01.05.2019 00:55:44

kutay
Üye
Kayıtlı: 02.04.2019
Mesajlar: 6

Garip bir SQL sorunu!

Arkadaşlar merhaba, garip bir sorunla karşılaştım.
SQL sorgumda OrWhere like gibi hareket ediyor.
Nerede hata yaptığımı anlayamıyorum.

Aşağıdaki sorguyu yaptığımda sonucu 1 getirmesi gerekirken 2 getiriyor.

domain.com/[email protected]

USER TABLOM
id                  email                                 tckimlikno          onay
1 ------ [email protected]       ------ 123456789101 ------ 1
2 ------ [email protected]       ------ 123456789102 ------ 0
3 ------ [email protected] ------ 123456789103 ------ 1

$sonuc = DB::table('users')
            ->where('onay', '=', '1')
            ->where(function ($query) {
                $query->where('tckimlikno',  '=',  $tckimlikno)
                          ->orWhere('email', '=',  $email);
              })->count();

Yardımlarınızı rica ediyorum..

Çevrimdışı

#2 01.05.2019 01:24:45

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Garip bir SQL sorunu!

$sonuc = DB::table('users')
    ->where('onay', '1')
    ->where(function ($query) use ($tckimlikno, $email) {
        $query->where('tckimlikno', $tckimlikno)
            ->orWhere('email', $email);
    })->count();

Çevrimdışı

#3 01.05.2019 01:36:06

kutay
Üye
Kayıtlı: 02.04.2019
Mesajlar: 6

Yanıt: Garip bir SQL sorunu!

Aynı sonucu veriyor hocam delirtti beni 4 saattir!...

{"sonuc":2}

Çevrimdışı

#4 01.05.2019 03:13:47

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Garip bir SQL sorunu!

Sorguda hata yok, kayıtları ve diğer kodları iyi kontrol edin.

count() yerine get() ile kayıtları alıp kontrol edin.

Çevrimdışı

#5 01.05.2019 09:52:46

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 445

Yanıt: Garip bir SQL sorunu!

Callback içi dışardan değişken almaz (Sadece süper globaller haric).O yüzden use ile içeri değişken aktarı[email protected] yazdığı gibi.

$degisken=1;

$query->where(function($query) use ($degisken) {

$degisken...

});

Son düzenleyen deathisonitsway (01.05.2019 09:54:45)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#6 01.05.2019 12:22:39

kutay
Üye
Kayıtlı: 02.04.2019
Mesajlar: 6

Yanıt: Garip bir SQL sorunu!

Lanet sorunu çözdüm...
Email değişkenini tırnak içerisine almak lazımmış. Yoksa like gibi çalışıyor.

->orWhere('email', ' '.$email.' ')

Teşekkürler yardımlarınız için.

Çevrimdışı

#7 01.05.2019 13:41:53

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Garip bir SQL sorunu!

Bu çözüm değil, öyle şey olur mu. Sizin kayıtlarda bir sıkıntı var demek ki, bir yerden içe mi aktardınız? Tablo alanlarındaki o sağ sol boşluklardan kurtulmanız lazım.

UPDATE users SET email = TRIM(email)

Çevrimdışı

#8 01.05.2019 13:44:30

kutay
Üye
Kayıtlı: 02.04.2019
Mesajlar: 6

Yanıt: Garip bir SQL sorunu!

mgsmus yazdı:

Bu çözüm değil, öyle şey olur mu. Sizin kayıtlarda bir sıkıntı var demek ki, bir yerden içe mi aktardınız? Tablo alanlarındaki o sağ sol boşluklardan kurtulmanız lazım.

UPDATE users SET email = TRIM(email)

Hayır hocam alt tarafı 4 kayıt var zaten.. Onları da manual girdim.
Ben de çok garipsedim ama bu şekilde çalışıyor.

Çevrimdışı

#9 03.05.2019 08:38:20

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 445

Yanıt: Garip bir SQL sorunu!

orWhere'in like gibi çalışması mümkün değil.Eğer böyle bir şey varsa çoktan bug pr'ı atılmıştı.Laravel community tarafından geliştirilme sürecinde ablukaya alınmış bir frameworktur.Böyle bir bugın raporlanmama ihtimali yok.Sizin datanızda sıkıntı var,geçiştirerek problemi çözemezsiniz.İlerde yine size case çıkartır.


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

Forum alt kısmı