2016-04-06 23 views
0

Bu tür bir mySQL sorgum var. Ben nasıl anlayamıyorum ben buMySQL sorgusunu birden çok koşulla Laravel 5'e dönüştürme

 $key = $request->search_key;   
    if(($request->session()->get('user'))!=null){   
            $license_data = License::join('purchase_items','license.license_id','=','purchase_items.license_id') 
            ->join('customer_purchases','customer_purchases.customer_purchase_id','=','purchase_items.customer_purchase_id') 
            ->join('users','users.user_id','=','customer_purchases.customer_id') 
            ->where('customer_purchases.status','=',1) 
            //some more codes       
            ->groupBy('license.license_id')         
            ->select('license.license_id', 
              'license.expiry_date', 
              'license.instances', 
              'users.email', 
              'license.license_type', 
              'license.is_valid') 
            ->paginate(10); 

gibi laravel 5 yazabilmek için bu başladık license_id, e-posta (kullanıcının) ile arama yapmak bunun için kullanıyor İşte

SELECT license.license_id, license.instances, license.expiry_date,license.license_type, users.email 
FROM license 
INNER JOIN purchase_items ON purchase_items.license_id = license.license_id 
INNER JOIN customer_purchases ON customer_purchases.customer_purchase_id = purchase_items.customer_purchase_id 
INNER JOIN users ON users.user_id = customer_purchases.customer_id 
INNER JOIN machines ON machines.license_id = license.license_id 
WHERE customer_purchases.status = 1 
AND license.license_id LIKE '%9fe%' 
OR users.email LIKE 'hora%' 
OR machines.machine_id LIKE '%dfd3%' 
GROUP BY license.license_id 

machine_id ediyorum çoklu koşullar kullan.

cevap

0

kullanım

$license_data = License::join('purchase_items','license.license_id','=','purchase_items.license_id')->join('customer_purchases','customer_purchases.customer_purchase_id','=','purchase_items.customer_purchase_id')->join('users','users.user_id','=','customer_purchases.customer_id')->where('customer_purchases.status','=',1)->orwhere('license.license_id','LIKE',$key)->orwhere('users.email','LIKE',$key)->orwhere('machines.machine_id','LIKE',$key)->groupBy('license.license_id') ->select('license.license_id', 'license.expiry_date', 'license.instances','users.email', 'license.license_type',license.is_valid')->paginate(10); 
0

Sen "orWhere" koşulunu kullanabilirsiniz ($ anahtar url ile birlikte gelen arama anahtar kelimesini anlamına gelir). Örneğin https://laravel.com/docs/5.1/queries#where-clauses

: $ anahtar dizidir ve licence_id, e-posta ve machine_id içeren

ise Sonra sorgu

$license_data = License::join('purchase_items','license.license_id','=','purchase_items.license_id')->join('customer_purchases','customer_purchases.customer_purchase_id','=','purchase_items.customer_purchase_id')->join('users','users.user_id','=','customer_purchases.customer_id')->where('customer_purchases.status','=',1)->orwhere('license.license_id','LIKE',$key['licence_id'])->orwhere('users.email','LIKE',$key['email'])->orwhere('machines.machine_id','LIKE',$key['machine_id'])->groupBy('license.license_id') ->select('license.license_id', 'license.expiry_date', 'license.instances','users.email', 'license.license_type',license.is_valid')->paginate(10); 
+0

$ anahtarıdır bir dizi değil . Sadece bu 'url? Search_key = 01090434e8f850779c6670be' gibi bir kelime taşır. Bu kelimeyi machine_id, license_id, emai (user) ile eşleşip eşleşmediğini aramak zorundayım. Bunu ben yaptım. ama sonuç yok. $ license_data boş dizi döndürür –

İlgili konular