php - 如何在laravel中使用多个键和值从数据库中查询数据?

标签 php mysql laravel

我已经尝试过,但它返回空数组。

    $arr = [];
    foreach($request->spec_id as $key=>$id){
        $arr[$id] = $request->spec[$key];
    }

    $arr = array_filter($arr);

    Ex: $arr = [
                6 => "2000",
                9 => "Petrol"
               ];

    $data = DB::table('categories as c')
        ->join('postads as p','c.id','p.category_id')
        ->join('postad_specifications as ps','p.id','ps.postad_id')
        ->join('specifications as s','ps.specification_id','s.id')
        ->where('p.category_id',$request->category_id)
        ->where(function($query) use($arr){
            foreach($arr as $key=>$value){
            $query->where('ps.specification_id',$key);
            $query->where('ps.value',$value);
            }
        })
        ->select('p.id','p.ad_title')
        ->distinct()
        ->get();

我想要的结果来自 postads 表,其中 ps.specation_idps.value 与键和值匹配。我该如何解决这个问题?

最佳答案

您可以使用 array_keys、array_values 函数, 并在 Laravel 中使用 whereIn

    $arr = [];
    foreach($request->spec_id as $key=>$id){
        $arr[$id] = $request->spec[$key];
    }

    $arr = array_filter($arr);

    Ex: $arr = [
                6 => "2000",
                9 => "Petrol"
               ];

    $arrKeys = array_keys($arr);
    $arrValues = array_values($arr);

    $data = DB::table('categories as c')
        ->join('postads as p','c.id','p.category_id')
        ->join('postad_specifications as ps','p.id','ps.postad_id')
        ->join('specifications as s','ps.specification_id','s.id')
        ->where('p.category_id',$request->category_id)
        ->whereIn('ps.specification_id', $arrKeys)
        ->whereIn('ps.value', $arrValues)
        ->select('p.id','p.ad_title')
        ->distinct()
        ->get();

关于php - 如何在laravel中使用多个键和值从数据库中查询数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238930/

相关文章:

php - 循环中的错误数组值

javascript - 如何自动关闭我的警报

mysql - 能否在 MySQL SELECT 语句中的多行中多次返回某列的最大值?

javascript - 在 Node js 中从数据库获取响应的替代方法?

php - 如何使用 PHP GD 库向图像添加文本

php - Multi-Tenancy 和多域 Laravel-5

mysql - 无法将两个查询合并为一个

javascript - 尝试使用jQuery使模态数据动态化

testing - 如何在 Laravel 中以登录用户身份运行 Behat 测试?

php - 在我的 Laravel 网站上集成 WordPress 博客的最佳方式是什么?