Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何搜索和匹配Laravel 8有许多/归属关系_Mysql_Laravel - Fatal编程技术网

Mysql 如何搜索和匹配Laravel 8有许多/归属关系

Mysql 如何搜索和匹配Laravel 8有许多/归属关系,mysql,laravel,Mysql,Laravel,我正在编写一个自动化过程,该过程采用输入配置(XML中的用户驱动)、目录结构和文件 这些配置创建了需要纳入MySQL的组合。这似乎相对简单: 变化->归属->模式->归属->位置->归属->图层 变化有1到1000个图案。图案包含位置为0、1、2、…10+的层。层用于许多模式和许多其他位置 变体是模式的容器。图案是在相关位置的层的组合。层和位置组合在一起形成图案 Variations -id -name Patterns -id Positions -id -position Layer

我正在编写一个自动化过程,该过程采用输入配置(XML中的用户驱动)、目录结构和文件

这些配置创建了需要纳入MySQL的组合。这似乎相对简单:

变化->归属->模式->归属->位置->归属->图层

变化有1到1000个图案。图案包含位置为0、1、2、…10+的层。层用于许多模式和许多其他位置

变体是模式的容器。图案是在相关位置的层的组合。层和位置组合在一起形成图案

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
}