tp5 开启路由完整匹配模式

我们现在有一个需求,前端既需要返回多个专题模块,又需要提供相应的 id 时能获得特定的专题模块。
我们先看一下我们的数据表:


专题表

产品表

关联表

我们新建两个模块和一个控制器:Theme 模块和 Product 模块以及 Theme 控制器。
我们先编写一下 Theme 模块:

protected $hidden = ['delete_time','update_time','topic_img_id','head_img_id'];

public function topicImg(){
  return $this->belongsTo('Image','topic_img_id','id');
}

public function headImg(){
  return $this->belongsTo('Image','head_img_id','id');
}

public function products(){
  return $this->belongsToMany('Product','theme_product','product_id','theme_id');
}

因为 theme 表含有外键 topic_img_id 和 head_img_id,一对一关系关联 image 表的主键 id,所以用 belongsTo 方法。(而不用 hasOne)
而主题表和产品表是属于多对多的关系,一个主题下面有多个产品,而一个产品可以属于多个主题。(例如某些新上架的水果,既可以属于水果主题,也可以属于新鲜好物主题)所以这里用 belongsToMany 方法,belongsToMany('关联模型名','中间表名','关联的表的外键名','当前模型关联键名');

现在我们看一下编写控制器:

class Theme
{
    public function getSimpleList($ids='')
    {
        ...
        return $result;
    }

    public function getComplexOne($id){
        ...
        return $result;
    }

}

我们接下连写一下路由:

Route::get('api/:version/theme','api/:version.Theme/getSimpleList');

Route::get('api/:version/theme/:id','api/:version.Theme/getComplexOne');

这是后回发现运行时不管参数是由逗号拼接而成的 ids 还是 id 都会运行第一个 getSimpleList,这是因为没有开启全匹配模式。
在 config.php 中找到更改为 true 即可。

'route_complete_match'   => true,

之后就可以正常的路由匹配了

你可能感兴趣的:(tp5 开启路由完整匹配模式)