像laravel mongo db包中的多个不能正常工作

时间:2017-06-23 19:39:32

标签: php laravel laravel-5 laravel-5.4

我有一个在laravel和mongodb创建的项目。我正在使用一个包来连接到mongodb“https://github.com/jenssegers/laravel-mongodb”。我有一个表格列表。在此表列表中,有一个搜索数据的文本框。为此,我使用喜欢功能。我在文档中遵循相同但不工作。当我搜索 invoice_number 时,数据变空。但是当我搜索时,数据变得越来越完美。请指正。

$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 个答案:

答案 0 :(得分: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