2017-06-23 24 views
0

我有一個在laravel和mongodb中創建的項目。我正在使用一個包連接到mongodb「https://github.com/jenssegers/laravel-mongodb」。我有一個表格列表。在此表中列出了搜索數據的文本框。對於我用功能。我遵循相同的文件,但不工作。當我搜索invoice_number數據變空。但是,當我搜索病牀數據越來越完美。請糾正我。多個像laravel mongo db包不能正常工作

$bookings = Booking::select('invoice_number', 'temp_user_id', 'user', 'checkin_from', 'reserve_to', 'beds', 'dormitory', 'sleeps', 'status', 'payment_status', 'payment_type', 'total_prepayment_amount', 'txid') 
       ->where('is_delete', 0) 
       ->where('invoice_number', 'like', "%{$search}%") 
       ->orWhere('beds', 'like', "%{$search}%") 
       ->skip($start) 
       ->take($limit) 
       ->orderBy($order, $dir) 
       ->get(); 

回答

1

查詢中的WHERE報表折算到這一點:

WHERE [cond_1] AND [cond_2] OR [cond_3]

我懷疑這是你所需要的條件。我想說你想要這個:

WHERE [cond_1] AND ([cond_2] OR [cond_3]) - 注意括號。

爲了實現這一點,您需要在Builder構建查詢中使用閉包。試試這個:

$bookings = Booking::select('invoice_number', 'temp_user_id', 'user', 'checkin_from', 'reserve_to', 'beds', 'dormitory', 'sleeps', 'status', 'payment_status', 'payment_type', 'total_prepayment_amount', 'txid') 
     ->where('is_delete', 0) 
     ->where(function($query) use ($search) { /* That's the closure */ 
      $query->where('invoice_number', 'like', "%{$search}%") 
      ->orWhere('beds', 'like', "%{$search}%"); 
     }) 
     ->skip($start) 
     ->take($limit) 
     ->orderBy($order, $dir) 
     ->get(); 

而且從文檔的example

+0

謝謝。最初我得到錯誤'未定義變量:搜索'。我添加了諸如'function($ query,$ search)'這樣的小改動。但是仍然出現錯誤,例如,在X:\ xampp \ htdocs \ cabap \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Eloquent \ Builder.php在207行,並定義爲' –

+0

我的不好。 '$ search'需要傳遞給閉包。更新了查詢。 – lesssugar

+0

非常感謝。現在它正在工作 –