<?php
namespace App\Http\Controllers;
use App\Models\Book;
use App\Models\Record;
use Illuminate\Http\Request;
class WebController extends Controller
{
public function index()
{
$books = Book::query()->get();
return view('home', compact("books"));
}
public function page(Request $request)
{
$name = $request->name;
$books = Book::query()->get();
if (view()->exists('pages.' . $name)){
return view('pages.' . $name, compact("books"));
} else {
abort(404, 'Whatever you were looking for, look somewhere else');
}
}
public function getRecords(Request $request)
{
$limit = $request->limit ?? 40;
$lastID = $request->last_id ?? 0;
$books = $request->books ?? [];
$search = $request->search ?? "";
$records = Record::query()
->with("book")
->orderBy("id", "ASC")
->limit($limit);
$records->whereIn("kitap_id", $books);
if (!empty($search)) {
$records->where(function ($query) use ($search) {
$query->where('urun_kodu', 'LIKE', "%{$search}%")
->orWhere('eski_urun_kodu', 'LIKE', "%{$search}%")
->orWhere('tanim', 'LIKE', "%{$search}%");
});
}
if ($lastID) {
$records->where("id", ">", $lastID);
}
$records = $records->get();
return view('components.table.rows', compact("records"));
}
public function detail(Request $request)
{
$slug = $request->slug;
$record = Record::query()
->with("book")
->where("slug", $slug)
->first();
$lastRecords = Record::query()
->with("book")
->where("id", ">", $record->id)
->orderBy("id", "ASC")
->limit(15)
->get();
$books = Book::query()->get();
return view('detailV2', compact("record", "lastRecords", "books"));
}
}merhaba, yukarıdaki kodda tek sorunum şu. bütün türkçe karakterlerde hiç bir sorun yaşamama rağmen ı harfinde sorun yaşıyorum arama sonuçlarını gösterirken. örneğin HAZIR BETON şeklinde aratma yaptığımda hazır betonu getirmiyor ya da hazır beton olarak aratma yaptığımda HAZIR BETON'u getirmiyor. yani I ve ı harflerinde sorunum var. chatgpt ile de bayağı boğuştum ama sonuç alamadım. yardımcı olabilirseniz sevinirim.
büyük-küçük ı harfi arama sorunu
3
●80
- 24-08-2024, 10:51:26
- 05-09-2024, 23:35:50TurkishSearchable isminde bir trait oluşturun ve ardındanbu traiti model içerisinde kullanın. Büyük küçük harf hatanızı giderecektir.
app/Traits/TurkishSearchable.php
<?php namespace App\Traits; use Illuminate\Database\Eloquent\Builder; trait TurkishSearchable { public function scopeTurkishSearch(Builder $query, $column, $searchTerm) { $searchTerm = $this->normalizeTurkishString($searchTerm); return $query->where(function ($q) use ($column, $searchTerm) { $q->whereRaw("LOWER($column) LIKE ?", ['%' . $searchTerm . '%']); }); } protected function normalizeTurkishString($string) { $replacements = [ 'ı' => 'i', 'İ' => 'i', 'ş' => 's', 'Ş' => 's', 'ç' => 'c', 'Ç' => 'c', 'ğ' => 'g', 'Ğ' => 'g', 'ü' => 'u', 'Ü' => 'u', 'ö' => 'o', 'Ö' => 'o' ]; return strtr(mb_strtolower($string), $replacements); } }app/Models/TestModel.php
<?php namespace App\Models; use App\Traits\TurkishSearchable; use Wildside\Userstamps\Userstamps; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class TestModel extends Model { use SoftDeletes, Userstamps, TurkishSearchable; protected $fillable = [ 'is_active', 'content', ]; }