在eloquent中选择辅助表中的所有字段

时间:2017-03-11 00:26:00

标签: php mysql laravel-eloquent

我的查询没有任何理由没有结束吗?我试图通过雄辩的方式从连接中获取辅助表中的所有值:

   Product::leftJoin('brands', 'products.brand_id', '=', 'brands.id')
                    ->leftJoin('product_categories', function($query) use ($parent){
                        $query->on('products.category_id', '=', 'product_categories.id')
                            ->where('product_categories.parent_id', $parent);
                    })
                    ->selectRaw('brands.*')
                    ->groupBy('brands.id') 
                    ->get();

如果我选择产品。*查询很好,但有品牌。*它永远不会结束,有人知道发生了什么吗?

如果我直接在phpmyadmin中运行sql,它会给我结果。

此查询需要的是让所有品牌拥有其类别为parent_id = $ parent

的现有产品

1 个答案:

答案 0 :(得分:0)

嗯,我不知道为什么eloquent从第二个表中获取字段有问题,但是我使用了查询构建器,因此这个查询工作正常。我离开我的"解决方案",也许这对某人有用:

    $brands = Product::leftJoin('brands', 'products.brand_id', '=', 'brands.id')
                    ->leftJoin('product_categories', function($query) use ($parent){
                        $query->on('products.category_id', '=', 'product_categories.id')
                            ->where('product_categories.parent_id', $parent);
                    })
                    ->selectRaw('brands.*')
                    ->groupBy('brands.id');
        $bindings = $brands->getBindings();
        $sql = $brands->toSql();
        $sql = vsprintf(str_replace('?', '%s', $sql), $bindings);
        $brands = \DB::select($sql);