小程序全栈学习-多对多关联关系的定义和路由完全匹配模式的开启


这篇文章主要记录两个知识点:1、多对多关联关系的定义;2、路由完全匹配模式的开启。

我们知道,多对多的对应关系的描述需要三个要素:主模型(主表),从模型(从表)和用来定义二者关系的中间表格。

定义多对多的关联关系要在主模型中进行,函数名称为belongsToMany。函数接收四个参数:1、关联模型名;2、描述多对多关系的中间表格;3、中间表格中关联模型的键;4、中间表格中本模型的键。具体示例如下:

public function products(){return $this->belongsToMany(‘product’,‘theme_product’,‘product_id’,‘theme_id’);}

路由完整匹配模式的开启

首先要明确为什么要开启路由完整匹配模式?

是因为TP5框架中默认路由从头匹配模式,这种模式在如下情况下会出问题:

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

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

如果访问的路径是y.cn/api/v1/theme/1  本来想访问的是第二个接口,但是由于TP5默然的从头匹配的路由规则,在进行第一个匹配之后就不会再执行第二个匹配。

要解决这个问题,就要启动路由完整匹配模式,开启方式:在config.php文件中设置:‘route_complete_match’   => true。

如果模型的多对多的关联关系,在查询模型的过程中,默认情况下,会自动查询出一个叫‘pivot’的属性,这个属性表示中间表

你可能感兴趣的:(小程序全栈学习-多对多关联关系的定义和路由完全匹配模式的开启)