美文网首页
tp5 开启路由完整匹配模式

tp5 开启路由完整匹配模式

作者: 风声233 | 来源:发表于2018-08-31 17:43 被阅读468次

我们现在有一个需求,前端既需要返回多个专题模块,又需要提供相应的 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 开启路由完整匹配模式

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

  • RabbitMQ工作模式 - 主题模式(Topic 模式) --

    RabbitMQ主题模式(Topic)跟路由模式类似,区别在于主题模式的路由匹配支持通配符模糊匹配,而路由模式仅支...

  • ThinkPHP基础-----第五章(路由相关)第一部分

    1、路由作用简化URL地址 2、入口文件: 3、隐藏入口文件: TP5路由: 路由模式:

  • 『react』路由

    一、路由的基本使用 1.路由的使用步骤: 2.默认路由 二、编程式导航 三、路由匹配模式 1.模糊匹配模式 2.精...

  • RabbitMQ 一二事(5) - 通配符模式应用

    之前的路由模式是通过key相等来匹配而通配符,顾名思义,符合条件,则进行消息匹配发送 将路由键和某模式进行匹配。此...

  • vue全家桶(2.5)

    3.8.动态路由匹配和路由组件传参 #3.8.1.动态路由匹配 动态路由意味着不固定,具有某种模式,我们希望通过某...

  • vue路由

    http://router.vuejs.org/zh-cn/ 动态路由匹配(路由传参) 我们经常需要把某种模式匹配...

  • 话题模式 Topic

    话题模式(Topic)基本思想和路由模式是一样的,只不过路由键支持模糊匹配,符号“#”匹配一个或多个词,符号“*”...

  • tp5,nginx配置

    Apache下自动支持TP5的pathinfo路由模式,然后在Nginx中需要自己配置。 步骤1:修改php.in...

  • Vue-router(3.1.6)源码阅读——路由匹配

    再讲路由切换(transitionTo方法)之前,先讲下路由匹配,毕竟先匹配才能切换嘛。先看下,三个模式的共同的父...

网友评论

      本文标题:tp5 开启路由完整匹配模式

      本文链接:https://www.haomeiwen.com/subject/ijkewftx.html