【问题标题】:Converting mySQL query to Laravel 5 with multiple conditions使用多个条件将 mySQL 查询转换为 Laravel 5
【发布时间】:2016-04-06 06:42:08
【问题描述】:

我有这种 mySQL 查询。我正在使用它来搜索 license_id、email(of user)、machine_id

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

这里我开始这样写在 Laravel 5 中

     $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);

我不明白如何使用多个条件。

($key 表示与 url 一起出现的搜索关键字)

【问题讨论】:

    标签: mysql laravel-5 multiple-conditions


    【解决方案1】:

    使用

    $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); 
    

    【讨论】:

      【解决方案2】:

      您可以使用“orWhere”条件。 https://laravel.com/docs/5.1/queries#where-clauses

      例如:

      如果$key是数组并且包含licence_id、email和machine_id, 然后查询是

      $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); 
      

      【讨论】:

      • $key 不是数组。它只是带有这样的词 url?search_key=01090434e8f850779c6670be 。我必须搜索该词是否与 machine_id、license_id、emai(user) 匹配。我确实喜欢这个。但没有结果。 $license_data 返回空数组
      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 2019-02-13
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多