Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Mysql 在Laravel中连接同一个表两次_Mysql_Laravel_Eloquent_Left Join - Fatal编程技术网

Mysql 在Laravel中连接同一个表两次

Mysql 在Laravel中连接同一个表两次,mysql,laravel,eloquent,left-join,Mysql,Laravel,Eloquent,Left Join,我正在Laravel上构建一个应用程序,在这里我需要在某些条件下连接同一个表 我有一个project\u associate\u brand表,其中包括以下列: project_id | brand_id | product_group_id | product_sub_group_id 我需要取出与项目相关的品牌,涉及产品组(id和产品组(id),以及与之相关的其他品牌 为了实现这一点,我尝试了: AssociatedBrands::where('project_a

我正在Laravel上构建一个应用程序,在这里我需要在某些条件下连接同一个表

我有一个
project\u associate\u brand
表,其中包括以下列:

project_id   |   brand_id   |   product_group_id    |   product_sub_group_id
我需要取出与项目相关的
品牌
,涉及
产品组(id
产品组(id)
,以及与之相关的其他
品牌

为了实现这一点,我尝试了:

AssociatedBrands::where('project_associate_brand.brand_id', '=', $id)
    ->leftjoin('project_associate_brand as pr_brand', function ($join) {
        $join->on('project_associate_brand.project_id', '=', 'pr_brand.project_id')
            ->where('project_associate_brand.product_group_id', '=', 'pr_brand.product_group_id')
            ->where('project_associate_brand.product_subgroup_id', '=', 'pr_brand.product_subgroup_id');
    })
    ->leftjoin('brands as b', function ($join) {
        $join->on('pr_brand.brand_id', '=', 'b.id')->whereNotIn('pr_brand.brand_id', [$id]);
    })
    ->select('project_associate_brand.*', 'b.id as other_brand_id', 'b.title as other_brand_title')
->paginate(15);
我没有得到想要的结果,我尝试删除了一些where子句,当我删除
product\u group\u id
product\u sub\u group\u id
时,我能够得到结果

AssociatedBrands::where('project_associate_brand.brand_id', '=', $id)
    ->leftjoin('project_associate_brand as pr_brand', function ($join) {
        $join->on('project_associate_brand.project_id', '=', 'pr_brand.project_id');
        
            //Removed other where clause
            
    })
    ->leftjoin('brands as b', function ($join) {
        $join->on('pr_brand.brand_id', '=', 'b.id')->whereNotIn('pr_brand.brand_id', [$id]);
    })
    ->select('project_associate_brand.*', 'b.id as other_brand_id', 'b.title as other_brand_title')
->paginate(15);

欢迎采取任何更好的办法。此外,我想执行
with()
急切加载关系

为什么不在AssociatedBrands模型中声明正确的关系呢?因此,您不必进行定制查询,只需通过$model->relationName获取所需信息……请尝试显示预期的表行和查询结果(例如2-3)由于您目前正在进行非常奇怪的查询构建,并且不清楚您想要实现什么..为什么不在AssociatedBrands模型中声明正确的关系呢?因此,您可以通过$model->relationName获取所需信息,而不是进行定制查询……请尝试显示预期的表行和查询结果(例如2-3),因为您目前正在执行非常奇怪的查询构建,并且不清楚您想要实现什么。。