Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 laravel查询中带where条件的数组值_Php_Mysql_Arrays_Laravel 5.3_Laravel Query Builder - Fatal编程技术网

Php laravel查询中带where条件的数组值

Php laravel查询中带where条件的数组值,php,mysql,arrays,laravel-5.3,laravel-query-builder,Php,Mysql,Arrays,Laravel 5.3,Laravel Query Builder,我有一个名为assetIDs的数组,如下所示 $assetIDs = Collection {#505 ▼ #items: array:2 [▼ 0 => 4 1 => 7 ] } 我的数据如下表所示 我用这个函数在上面的表上进行查询 $supplier\u id=SupplierAsset::其中('asset\u id',$asset\u id)->pull('supplier\u id') 上述查询的结果如下所示 Collection {#510 ▼

我有一个名为
assetIDs
的数组,如下所示

$assetIDs = Collection {#505 ▼
  #items: array:2 [▼
    0 => 4
    1 => 7
  ]
}
我的数据如下表所示

我用这个函数在上面的表上进行查询

$supplier\u id=SupplierAsset::其中('asset\u id',$asset\u id)->pull('supplier\u id')

上述查询的结果如下所示

Collection {#510 ▼
  #items: array:3 [▼
    0 => 1
    1 => 1
    2 => 2
  ]
}
此处
,其中
返回满足条件的所有可能行。实际上,我需要得到这样的结果,
supplier\u id
具有
assetIDs
数组的两个值。在我的表中,
supplier\u id=1
具有
4
7
这两个值,就像下面的集合一样

Collection {#510 ▼
  #items: array:3 [▼
    0 => 1
    1 => 1
  ]
}
有人能给我建议解决这个问题的方法吗

您可以尝试:

$supplier_id = SupplierAsset::whereIn('asset_id',$asset_ids)
               ->groupBy('supplier_id')
               ->havingRaw('count(distinct asset_id) = ' . count($assetIDs))
               ->pluck('supplier_id');
您可以尝试:

$supplier_id = SupplierAsset::whereIn('asset_id',$asset_ids)
               ->groupBy('supplier_id')
               ->havingRaw('count(distinct asset_id) = ' . count($assetIDs))
               ->pluck('supplier_id');

以下是您应该执行的mysql:

1-获取所有具有一个以上供应商id的id:

SELECT supplier_id, Count(distinct asset_id) as dist_asst
 FROM Table
 GROUP BY supplier_id
 HAVING dist_asst > 1
2-然后执行连接:

SELECT t1.supplier_id
FROM Table t1
INNER JOIN (SELECT supplier_id, Count(distinct asset_id) as dist_asst
     FROM Table
     GROUP BY supplier_id
     HAVING dist_asst > 1) t2 on t2.supplier_id = t1.supplier_id

以下是您应该执行的mysql:

1-获取所有具有一个以上供应商id的id:

SELECT supplier_id, Count(distinct asset_id) as dist_asst
 FROM Table
 GROUP BY supplier_id
 HAVING dist_asst > 1
2-然后执行连接:

SELECT t1.supplier_id
FROM Table t1
INNER JOIN (SELECT supplier_id, Count(distinct asset_id) as dist_asst
     FROM Table
     GROUP BY supplier_id
     HAVING dist_asst > 1) t2 on t2.supplier_id = t1.supplier_id

我已经试过了。它排除了重复的值。如果没有goupBy,它只返回一个
供应商id
。在你的情况下,它没有区别,但如果你有大数据,它就会出错。我已经试过了。它排除了重复的值。如果没有goupBy,它只返回一个
供应商id
。在你的情况下没有区别,但是如果你有大数据,就会出错。我在mysql中有答案,但我不知道laravel,您混合了两个查询:-首先,您希望获得具有两个不同值的供应商id-其次,您希望显示it@JeanDoux:好的,你能帮我做mysql查询吗?我有mysql的答案,但我不知道laravel,您混合了两个查询:-首先,您希望获得具有两个不同值的供应商id-其次,您希望显示it@JeanDoux:好的,你能帮我做一下mysql查询吗?让我检查一下这两个查询你的查询返回了所有的供应商id,但是这个查询对我有效
SELECT supplier\u id FROM供应商资产,其中,('4','7')组中的资产id由供应商id组成,其计数(*)=
,但当我将其转换为laravel时,其返回空值:(第一次查询的结果是什么?让我检查这两个查询您的查询将返回所有供应商id,但此查询对我有效
从供应商资产中选择供应商id,其中资产id位于('4','7')组中,供应商id具有COUNT(*)=
,但当我将其转换为laravel时,返回空值:(第一次查询的结果是什么?