在我的資料庫中,我有一個id列,它可以包含整數、字串、整數 字串值。喜歡,檢查這張圖片:
https://ibb.co/2KNJzVW
正如您在id列中看到的那樣,我有類似這個值的內容:
產品編號
PPAETRABN018283
所以,在輸入框(我的搜索表單)上 -
如果我輸入產品,我可以獲得結果,因為產品 ID值為id。
如果我輸入PPAE,我可以得到結果,因為PPAETRABN018283值作為id
但
如果我輸入182我得不到任何結果,盡管我使用LIKE. 你能告訴我為什么嗎?
和
我還有另一個名為可用性的列,其中包含true和false作為布林值。如果我使用true進行搜索,我可以獲得結果,但是我使用false進行搜索,我無法獲得結果。你能告訴我為什么嗎?
這是我的代碼:
$trimmed_array = $request->all();
$whereLike = $whereIn = $where = [];
foreach( $trimmed_array as $k => $v ) {
if( $k !== 'page' && $k !== 'projectToken' && $k !== 'userId' ) {
if( !empty( $v ) ) {
if( is_numeric( $v) ) {
$whereIn[] = [$k, (int) $v];
} elseif( trim( strtolower($v)) == 'false' || trim(strtolower($v)) == 'true') {
$where[] = [$k, $v ];
} else {
$whereLike[] = [$k, 'LIKE', '%'. $v .'%' ];
}
}
}
}
$projectToken = $request->input('projectToken');
$userId = $request->input('userId');
$this->set_connection( $projectToken, $userId );
$get_project_id = DB::connection('mysql')->table('projects')->where('token', $projectToken )->get(['id_project'])->first();
$collection = 'products_' . $get_project_id->id_project;
$collection = 'products_105';
$search = DB::connection('mongodb')->collection( $collection );
if( count( $whereIn) ) {
foreach( $whereIn as $array ) {
$key = $array[0];
$value = (int) $array[1];
$search->whereIn($key, [$value]);
}
}
if( count( $whereLike) ) {
$search->where($whereLike);
}
if( count( $where ) ) {
foreach( $where as $arr ) {
$key = $arr[0];
$value = (bool) $arr[1];
$search->where($key, $value);
}
}
$search = $search->paginate(100);
return response()->json( [ 'product_value' => $search ], 200);
uj5u.com熱心網友回復:
在這種情況下,我們使用LIKEwith wrapping %,例如:
$needle = ...; // What to find (User's input).
$query = ...;
$query->where('myColumn', 'like', '%' . $needle . '%');
如果您在多列中搜索,請嘗試:
$needle = ...;
$query = ...;
// List search target.
$columns = ['myFirstColumn', 'myOtherColumn'];
$pattern = '%' . $needle . '%';
foreach ($columns as $name) {
$query = $query->orWhere($name, 'like', $pattern);
}
請注意,如果
where(...)方法的第三個引數未設定,Laravel 默認會自動=在查詢中使用“”條件運算子,而上面使用“LIKE”代替。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/535885.html
標籤:PHP数据库拉维
上一篇:如何使用QueryBuilder實作與Eloquent的預加載類似的結構?
下一篇:通過年份和月份查找命令迭代
