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,

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 理工寝室商店-微信小程序 疑问小结 当时在XAMMP下mysql目录下的bin下 php -v 不起作用.到ph...
    这个超人不会飞阿阅读 5,694评论 1 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,925评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • 曾记否 (文/亦浓) 皎月壶光思未休 白云乡里借温柔 含情春风扬飞絮 落花无意相思瘦 脉脉星眸盈盈惆 沁香幽兰语还...
    开在夜里的花儿阅读 2,854评论 7 15
  • 最近看到好多公众号的文章都是在“骂男人”!我个人生活幸福,当然也有一些公众号文章里所说的问题。但我并不把所有的问题...
    晴晨2017阅读 3,008评论 1 0

友情链接更多精彩内容