Mysql 如何搜索和匹配Laravel 8有许多/归属关系
我正在编写一个自动化过程,该过程采用输入配置(XML中的用户驱动)、目录结构和文件 这些配置创建了需要纳入MySQL的组合。这似乎相对简单: 变化->归属->模式->归属->位置->归属->图层 变化有1到1000个图案。图案包含位置为0、1、2、…10+的层。层用于许多模式和许多其他位置 变体是模式的容器。图案是在相关位置的层的组合。层和位置组合在一起形成图案Mysql 如何搜索和匹配Laravel 8有许多/归属关系,mysql,laravel,Mysql,Laravel,我正在编写一个自动化过程,该过程采用输入配置(XML中的用户驱动)、目录结构和文件 这些配置创建了需要纳入MySQL的组合。这似乎相对简单: 变化->归属->模式->归属->位置->归属->图层 变化有1到1000个图案。图案包含位置为0、1、2、…10+的层。层用于许多模式和许多其他位置 变体是模式的容器。图案是在相关位置的层的组合。层和位置组合在一起形成图案 Variations -id -name Patterns -id Positions -id -position Layer
Variations
-id
-name
Patterns
-id
Positions
-id
-position
Layer
-id
-path
Pattern_Variation
-id
-variation_id
-pattern_id
Pattern_Position
-id
-pattern_id
-position_id
Layer_Position
-id
-layer_id
-position_id
因此,使用XML配置文件来定义在模式的每个位置使用的层。绊脚石是。。。在创建一个变体及其所有模式、位置和层及其所有关系之后,我如何测试组合是否已经存在或需要创建。这一点很重要,因为随着时间的推移会添加额外的层,从而创建新的模式。为了了解它们是否是新的,必须进行测试,以查看变化是否具有所述模式(作为关系)
为了让您了解情况,XML解析过程将定义一个数组:
array(2003) {
[0]=>
array(4) {
[0]=>
int(1) // Position 0 with layer_id of 1
[1]=>
int(12) // Position 1 with layer_id of 12
[2]=>
int(115) // Position 2 with layer_id of 115
[3]=>
int(8) // Position 3 with layer_id of 8
}
[1]=>
array(2) {
[0]=>
int(4)
[1]=>
int(102)
}
...
因此,当再次处理这些变化时,我需要能够检查是否有任何变化(关于用户的配置或添加了需要创建新模式的新层等)
那么,我如何实现一个Laravel关系,以便能够定位和匹配(检查它是否存在)
如果能够反向搜索,看看用户的配置是否已经消除了清洁等历史模式的需要,这也是谨慎的做法
问题是模式没有固定数量的位置。它们可以有1到10个位置层。因此,构造查询以进行匹配似乎超出了Laravel关系路径
有人能暗示一条可能的路线吗
$pattern = Variation::has('patterns')->has('positions')->where('position',$the_position_in_array)->where('layer_id',$the_layer_id_in_array)->first();
if($pattern == false){
// Make a new pattern
}