Merhaba arkadaşlar,
Yaklaşık 2 yıldır çalışan aşağıdaki fonksiyonum çalışmaz hale geldi. Kodun çalışmama sebebi like ile yazdığım sorguların like sorgusu yerine eşitlik şeklinde hazırlanıp çalıştırılması. Neden bu hale geldi anlayamadım. Koda herhangi bir müdahale yapmadım ama laraveli güncelledim. Şu anda 5.4.25 sürümünde.
public function user_autocomplate(){
$term = request()->get('term');
$term = ltrim($term, ' ');
$users = User::select('guid', 'nick', 'nick_slug', 'email', 'title', 'card_id', 'first_name', 'last_name', 'gender', 'phone_1');
if(is_numeric($term)){
if(strpos($term, '0') === 0){
$users = $users->where(function($query) use ($term) {
return $query
->where('phone_1', 'LIKE', '%' . $term . '%');
});
}else{
$users = $users->where(function($query) use ($term) {
return $query
->where('card_id', 'LIKE', '%' . $term . '%');
});
}
}else{
$users = $users->where(function($query) use ($term) {
return $query
->where('nick', 'LIKE', '%' . $term . '%')
->orWhere('nick_slug', 'LIKE', '%' . $term . '%')
->orWhere('email', 'LIKE', '%' . $term . '%')
->orWhere('title', 'LIKE', '%' . $term . '%')
->orWhere('first_name', 'LIKE', '%' . $term . '%')
->orWhere('last_name', 'LIKE', '%' . $term . '%');
});
}
$users = $users
->where(['is_deleted' => 0])
->orderBy('first_name', 'ASC')
->limit(10)
->get()
->toArray();
$results = [];
foreach ($users as $user)
{
$results[] = [
'value' => $user['guid'],
'label' => $user['first_name'] . ' '. $user['last_name'] . ' (' . $user['nick'] . ' - ' . $user['nick_slug'] . ' - ' . $user['email'] . ' - ' . $user['title'] . ')' . ' (' . $user['card_id'] . ' - ' . $user['phone_1'] . ')',
'data' => $user
];
}
return $results;
}
select `guid`, `nick`, `nick_slug`, `email`, `title`, `card_id`, `first_name`, `last_name`, `gender`, `phone_1` from `core___users` where (`nick` = ? or `nick_slug` = ? or `email` = ? or `title` = ? or `first_name` = ? or `last_name` = ?) and (`is_deleted` = ?) order by `first_name` asc limit 10
Where sorgusunu aşağıdaki gibi değiştirip denedim yine olmadı.
->where('nick', 'LIKE', DB::raw('"%' . $term . '%"'))
Ardından Laravel'i 5.4.20 sürümüne geri çektim ama yine işe yaramadı.
Bir çözüm öneriniz var mı ?