Mysql 在Laravel中连接同一个表两次
我正在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
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),因为您目前正在执行非常奇怪的查询构建,并且不清楚您想要实现什么。。