在 Laravel 中使用 Eloquent ORM 检索 Bengali 数据的基本方法:
// 获取所有 Bengali 记录
$banglaRecords = BanglaModel::all();
// 获取第一条记录
$firstBangla = BanglaModel::first();
// 按 ID 查找
$banglaById = BanglaModel::find(1);
// 简单条件查询
$records = BanglaModel::where('title', 'বাংলা শিরোনাম')->get();
// 多条件查询
$records = BanglaModel::where('language', 'bn')
->where('status', 'published')
->get();
// 基本 LIKE 搜索
$results = BanglaModel::where('content', 'LIKE', '%বাংলা%')->get();
// 全文搜索 (需配置)
$results = BanglaModel::whereFullText('content', 'বাংলা ভাষা')->get();
// 按 Bengali 字段排序
$sorted = BanglaModel::orderBy('title_bn', 'asc')->get();
// 复杂排序
$sorted = BanglaModel::orderByRaw("CONVERT(title_bn USING utf8mb4) COLLATE utf8mb4_unicode_ci ASC")->get();
// 简单分页
$paginated = BanglaModel::paginate(15);
// 带 Bengali 查询的分页
$paginated = BanglaModel::where('language', 'bn')
->orderBy('created_at', 'desc')
->paginate(20);
// 确保数据库连接使用正确的字符集
// 在 config/database.php 中配置:
'mysql' => [
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
// 查询时指定字符集
DB::statement('SET NAMES utf8mb4');
// 使用 SCOUT 进行 Bengali 全文搜索 (需安装 scout 和相应驱动)
$results = BanglaModel::search('বাংলা')->get();
// 使用 Bengali 正则表达式
$matches = BanglaModel::where('content', 'REGEXP', '[ব-হ]+')->get();
// 假设有 Author 和 BanglaPost 模型
class Author extends Model {
public function banglaPosts() {
return $this->hasMany(BanglaPost::class);
}
}
// 检索某作者的所有 Bengali 文章
$author = Author::find(1);
$banglaPosts = $author->banglaPosts()->where('language', 'bn')->get();
// 使用 eager loading 减少查询
$banglaWithAuthor = BanglaModel::with('author')
->where('language', 'bn')
->get();
// 只选择需要的字段
$lightweight = BanglaModel::select('id', 'title_bn', 'excerpt_bn')
->where('language', 'bn')
->get();
utf8mb4
字符集以上方法应该能覆盖大多数 Bengali 数据检索场景。根据具体需求,可能需要进一步调整或扩展这些查询。