Php laravel mongo db包中的多个类似项不工作
我有一个项目,这是在拉威尔和mongodb创建。我正在使用一个包连接到mongodb“”。我有一张桌子清单。在此列表表中,有一个用于搜索数据的文本框。为此,我使用了like功能。我在文档中也遵循了同样的方法,但没有工作。当我搜索发票号时,数据变为空。但当我搜索床位时,数据变得非常完美。请纠正我Php laravel mongo db包中的多个类似项不工作,php,laravel,laravel-5,laravel-5.4,Php,Laravel,Laravel 5,Laravel 5.4,我有一个项目,这是在拉威尔和mongodb创建。我正在使用一个包连接到mongodb“”。我有一张桌子清单。在此列表表中,有一个用于搜索数据的文本框。为此,我使用了like功能。我在文档中也遵循了同样的方法,但没有工作。当我搜索发票号时,数据变为空。但当我搜索床位时,数据变得非常完美。请纠正我 $bookings = Booking::select('invoice_number', 'temp_user_id', 'user', 'checkin_from', 'reserve_to', 'b
$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();
查询中的
WHERE
语句转换为:
其中[cond_1]和[cond_2]或[cond_3]
我怀疑这是你需要的条件。我想说你想要这个:
其中[cond_1]和([cond_2]或[cond_3])
——注意括号
要实现这一点,您需要在生成器查询中使用闭包。试试这个:
$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();
还有来自文档的。谢谢。最初我得到错误
未定义变量:search
。我添加了一些小改动,如函数($query,$search)
。但我仍然得到了错误,比如第207行的App\Http\Controllers\BookingController::App\Http\Controllers\{closure}()缺少参数2,该参数在X:\xampp\htdocs\cabinapi\vendor\laravel\framework\src\light\Database\Eloquent\Builder.php中调用,并定义了My bad。$search
需要传递给闭包。已更新查询。