Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 20.10.2014 16:45:36

betho
Üye
Kayıtlı: 15.05.2014
Mesajlar: 71

Eloquent array like select ?

Arkadaşlar merhaba

projemde bir controller da like sorgum var ve tek tek gelen kelimeleri bunula sorgulayıp sonucu alıyordum ancak birden fazla kelime  ile arama yapmak istediğimde gelen kelimeleri bir
$string=['samsung','brother','acer']; değişkeni içine aldım ve bunu like sorgumda kullanmak istedim
ancak
->where('prod_brand', 'LIKE', '%'.$string .'%') kullanmım esnasında bana sadece array ın ilk kelimesinden sonuçlar  dönderiyor 

Diğer değişkenlerle ilgili sorgu gerçekleşmiyor
Sanırım ben Eloquent ile array şeklinde gelen bir değişkenin içindeki değerlere göre sorgu yapmayı başaramadım

Kısacası array içinde gelen verilere göre bir eloquent modelinde nasıl sorgu yapabilirim

Bu konuda söylecekleriniz için şimdiden teşekkür ederim

Selam ve dua ile

Çevrimdışı

#2 20.10.2014 19:11:15

sergin
Üye
Kayıtlı: 17.07.2013
Mesajlar: 130
Website

Yanıt: Eloquent array like select ?

Burada dizinin her elemanı için aralarında OR olan ayrı bir where şartları istemeniz gerekir. Yani sql sorgusunun where kısmı sonuç olarak sizin örneğinizde

where(prod_brand LIKE '%samsung%' OR prod_brand LIKE '%brother%' OR prod_brand LIKE '%acer%')

haline dönüşmesi lazım.

Eloquent veya sorgu oluşturucusunda bunu ileri where cümlesi ile yapabilirsiniz. Sorgunuzun sadece where kısmı verilmiştir.

$string=['samsung','brother','acer']; 
//...Sorgunun önceki kısmı
->where(function($query) use($string)
            {
                foreach($string as $sitiring) {
			$query->orWhere('prod_brand', 'like', '%'.$sitiring.'%');
		}
            })
//...Sorgunun sonraki kısmı 

Çevrimdışı

#3 20.10.2014 19:41:10

betho
Üye
Kayıtlı: 15.05.2014
Mesajlar: 71

Yanıt: Eloquent array like select ?

Çok teşekkür ederim @sergin

Bunu sayende aştım minnettarım

Birde aynı konu ile alakalı olarak ufak bir detay rica edebilir miyim ?

 $brands = Merchantsproduct::where('cat_id', '=', $id)
     ->where('cat_id', '>', 1)
     ->where('cat_map', '>', 0)
     ->where('is_active','=',1)
     ->distinct('prod_brand')
     ->groupBy('prod_brand')
     ->select(DB::raw('prod_brand as brand'))
     ->get();

Bu şekilde bir sorgum var , bu modelin tablosunda aynı markadan yüzlercesi tekrar ediliyor ancak ben her markadan o sütünda bulunan yüzlerce SONY markasından sadece bir tane getirmek istedim fakat 2 şer tane olarak dönüyor acaba nerede hata yapıyorum ?
Şimdiden teşekkür ederim

Selam ve dua ile

Son düzenleyen betho (20.10.2014 19:41:43)

Çevrimdışı

#4 20.10.2014 20:05:00

sergin
Üye
Kayıtlı: 17.07.2013
Mesajlar: 130
Website

Yanıt: Eloquent array like select ?

distinct metodu bir parametre almaz, sorgunuzda groupBy gereksizdir.

Çevrimdışı

#5 20.10.2014 20:26:54

betho
Üye
Kayıtlı: 15.05.2014
Mesajlar: 71

Yanıt: Eloquent array like select ?

sergin yazdı:

distinct metodu bir parametre almaz, sorgunuzda groupBy gereksizdir.

Çok teşekkür ederim @sergin

Çevrimdışı

Forum alt kısmı