Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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

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
Php 3(可选)雄辩的人际关系水平_Php_Laravel_Eloquent - Fatal编程技术网

Php 3(可选)雄辩的人际关系水平

Php 3(可选)雄辩的人际关系水平,php,laravel,eloquent,Php,Laravel,Eloquent,我想创建一个网站,狗主人可以搜索什么,他们可以喂他们的狗安全。或者不是。 我一直在为这一点的概念挣扎,请容忍我 让我们以四种产品(表产品)为例: 鳄梨 巧克力 鸡 胡萝卜 这些产品可以有一个或多个元素(表元素): 坑 肉 皮 骨头 这些元素可以以不同的方式准备(表属性): 生的 烹调 现在让我们把这些联系起来 鳄梨有核、皮和肉 巧克力就是巧克力 鸡肉有肉也有骨头。肉和骨头可以生的和熟的 现在我需要谈谈这些产品及其成分/制备 鳄梨核(1.1)和皮肤(1.3)对狗是有毒的,它的肉是好的(不管怎

我想创建一个网站,狗主人可以搜索什么,他们可以喂他们的狗安全。或者不是。
我一直在为这一点的概念挣扎,请容忍我

让我们以四种产品(表产品)为例:

  • 鳄梨
  • 巧克力
  • 胡萝卜
  • 这些产品可以有一个或多个元素(表元素):

  • 骨头
  • 这些元素可以以不同的方式准备(表属性):

  • 生的
  • 烹调
  • 现在让我们把这些联系起来

  • 鳄梨有核、皮和肉
  • 巧克力就是巧克力
  • 鸡肉有肉也有骨头。肉和骨头可以生的和熟的
  • 现在我需要谈谈这些产品及其成分/制备

  • 鳄梨核(1.1)和皮肤(1.3)对狗是有毒的,它的肉是好的(不管怎样,1.2)
  • 巧克力总是有毒的(2)
  • 鸡肉(3.2)总是好的,煮熟的骨头(3.4.2)是有毒的,生的(3.4.1)是好的
  • 胡萝卜总是好的
  • 对我来说,似乎我必须将这些关系(无论其深度)存储在一个表中,并有一个单独的表来说明这种关系是安全的还是有害的

    但我不确定如何在Laravel模型中建立这一点,并通过雄辩的方式进行查询。
    因为在用户端,您只想搜索巧克力或鳄梨,并看到返回的各种关系。

    我建议创建这样一个结构

    产品

    • 身份证
    • 名字
    产品元素

    • 身份证
    • 产品标识
    • 名字
    • 准备(生的、熟的)
    • 你有毒吗
    当用户选择了食物并想看看狗能吃什么时

    ProductElement::query()->whereIn('product_id', [1, 2])->get();
    ProductElement::query()->whereIn('product_id', [1, 2])->where('is_toxic', false)->get();
    

    我很欣赏这种想法@Dry7。有了正确的索引,元素表膨胀(例如鸡肉需要两行肉;一行有毒,一行正常)不一定是问题。但我不知道该怎么做,比如巧克力,它不含任何元素,只是有毒而已。我可以添加一个伪行,但我也在考虑一个多态表?我是不是想得太多了?
    ProductElement::query()->whereIn('product_id', [1, 2])->get();
    ProductElement::query()->whereIn('product_id', [1, 2])->where('is_toxic', false)->get();