Laravel / PHPSQL查询,该查询从表中选择与数组中的product_id和variant_id匹配的所有订单

问题描述

我正在尝试构建一个SQL查询,该查询将从与我定义的选项匹配的表中选择所有订单。

我使用的数据库MysqL 语言:PHP

基本上我有一个看起来像这样的数组。

[
 [
   "user_id" => 1,"product_id" => 5548,"variation_id" => 14
 ],[
   "user_id" => 1,"variation_id" => 15
 ],"product_id" => 4422,"variation_id" => 4
 ]
]

这意味着用户(id:1)拥有一个产品的“ id”为5548,然后他还具有该产品的2个变体,分别为“ id” 14和15。您还可以看到相同的用户拥有具有差异(id:4)的产品(id:4422)。

然后我有一个看起来像这样的“ order_lines”表

order_lines
+----+-----+---------+-----------------------------+
| id | uid | user_id | product_id  |  variation_id |
+----+-----+---------+-----------------------------+
| 1  |  1  |     1   |     5548    |       14      |
+----+-----+---------+-----------------------------+
| 2  |  2  |     1   |     5548    |       15      |
+----+-----+---------+-----------------------------+
| 3  |  3  |     1   |     4422    |        4      |
+----+-----+---------+-----------------------------+
| .  |  .  |     .   |     ....    |       ..      |
+----+-----+---------+-----------------------------+

我现在需要一个SQL查询,该查询将选择数组中定义的user_id,product_id和variation_id之间匹配的所有行。

输出应包含满足这些条件的所有行。

我希望有人可以将我固定在正确的方向上。

如果您可以使用查询构建器,那么我将在Laravel中构建。另外,我非常感谢SQL查询

解决方法

如果我说对了,那么下面的代码将仅使用Core PHP即可为您提供帮助

df = pd.concat([df1,df2,df3],keys=['df1','df2','df3'],names=['frame'])
df.loc[(df.index.levels[0],0),'col1'].tolist()
,

请尝试以下代码以使用Laravel Query Builder,以下代码将帮助您根据产品和版本获取多个用户的结果。

$qb_order_lines = DB::table('order_lines');

$where_condition = [
    ['user_id' => '','product_id' => '','variation_id' => ''],];

foreach ($where_condition as $condition) {
    $qb_order_lines->orWhere(function($query) use ($condition) {
        $query->where('user_id',$condition['user_id'])
                ->where('product_id',$condition['product_id'])
                ->where('variation_id',$condition['variation_id']);
    });
}
$obj_result = $qb_order_lines->get();

如果只想获取一个用户,请使用以下代码

$obj_result = DB::table('order_lines')
        ->where('user_id',$condition['user_id'])
        ->where('product_id',$condition['product_id'])
        ->where('variation_id',$condition['variation_id'])
        ->get();

您可以根据您的要求(例如选择字段或分组依据)修改上述查询构建器。

让我知道您是否需要任何帮助。

,

对任何有兴趣的人。

我的问题是我需要计算数组和数据库之间的许多匹配项。

代替选择和输出。我在查询中使用了sql count()函数,完成了这项工作。