You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel新手教程:如何通过路由URL参数实现countries表数据过滤

通过URL参数过滤Laravel中countries表的数据

嘿,作为Laravel新手,这个需求其实非常常见,我来一步步带你实现👇

1. 准备模型(如果还没有的话)

首先得有一个对应countries表的Eloquent模型,方便咱们操作数据库。如果还没创建,打开终端运行这条命令:

php artisan make:model Country

生成的模型文件在app/Models/Country.php,默认已经关联了countries表(Laravel会自动按模型名复数匹配表名),不用额外配置。

2. 创建控制器并编写逻辑

接下来需要一个控制器来处理请求和过滤逻辑,运行命令生成控制器:

php artisan make:controller CountryController

打开app/Http/Controllers/CountryController.php,写入以下代码:

namespace App\Http\Controllers;

use App\Models\Country;
use Illuminate\Http\Request;

class CountryController extends Controller
{
    public function index(Request $request)
    {
        // 初始化查询构造器,先拿到所有countries的查询入口
        $query = Country::query();

        // 检查URL中是否带有`name`参数,如果有就添加过滤条件
        if ($request->has('name')) {
            // 精确匹配:只返回name完全等于参数值的条目
            $query->where('name', $request->input('name'));

            // 如果你需要模糊匹配(比如输入"spa"能返回"Spain"),可以替换成下面这行:
            // $query->where('name', 'like', "%{$request->input('name')}%");
            // 或者Laravel 9+可以用更简洁的whereLike:
            // $query->whereLike('name', $request->input('name'));
        }

        // 执行查询,获取过滤后的结果
        $countries = $query->get();

        // 返回JSON格式的响应(API场景推荐),如果是web页面可以返回视图
        return response()->json($countries);
    }
}

3. 定义路由

打开routes/api.php(如果是API接口)或者routes/web.php(如果是页面请求),添加一条路由:

use App\Http\Controllers\CountryController;

Route::get('/countries', [CountryController::class, 'index']);

4. 测试效果

现在你可以访问对应的URL来测试了:

  • 精确匹配:http://你的域名/api/countries?name=spain
  • 模糊匹配(如果用了like语句):http://你的域名/api/countries?name=spa

额外优化建议

  • 参数验证:可以给参数加个简单验证,避免无效输入,在控制器的index方法开头添加:
    $request->validate([
        'name' => 'string|nullable', // 允许name参数为空,或者是字符串类型
        // 如果你的表还有其他字段比如`code`,可以继续加规则:'code' => 'string|nullable'
    ]);
    
  • 多参数过滤:如果需要同时过滤多个字段(比如?name=spain&code=es),只需要在查询构造器里多加几个条件:
    if ($request->has('code')) {
        $query->where('code', $request->input('code'));
    }
    

内容的提问来源于stack exchange,提问作者Aniket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:29:03