Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel mongo db包中的多个类似项不工作_Php_Laravel_Laravel 5_Laravel 5.4 - Fatal编程技术网

Php laravel mongo db包中的多个类似项不工作

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

我有一个项目,这是在拉威尔和mongodb创建。我正在使用一个包连接到mongodb“”。我有一张桌子清单。在此列表表中,有一个用于搜索数据的文本框。为此,我使用了like功能。我在文档中也遵循了同样的方法,但没有工作。当我搜索发票号时,数据变为空。但当我搜索床位时,数据变得非常完美。请纠正我

$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
需要传递给闭包。已更新查询。