首页 > 解决方案 > Laravel 6:在一对多关系上选择不同

问题描述

我试图为每个产品获取一张图片,但如果产品有 3 张图片,它会返回一个产品的 3 个实例,其中包含不同的图片

mobimages
idimage | idproduto | prodimage |
1       | 2         | xxxxx.png |
2       | 2         | yyyy.png  |
3       | 2         | zzzzz.png |

produtos
id      | marca       | modelo |
1       | Huawei      | P30    |
2       | Samsung     | A20    |
3       | Xiaomi      | Note7  |

控制器

 $produtos = DB::table('produtos')
        ->join('mobimages', 'mobimages.idproduto', '=', 'produtos.id')
        ->select('produtos.*', 'mobimages.prodimage')->distinct('mobimages.prodimage')->get();

我想要以下结果

id  | marca | modelo | prodimage |
2   |samsung|A20     | xxxx.png  |

不是

 id  | marca | modelo | prodimage |
 2   |samsung|A20     | xxxx.png  |
 2   |samsung|A20     | yyyy.png  |
 2   |samsung|A20     | zzzzz.png  |

标签: laravelimage

解决方案


利用groupBy

 $produtos = DB::table('produtos')
        ->join('mobimages', 'mobimages.idproduto', '=', 'produtos.id')
        ->select('produtos.*', 'mobimages.prodimage')
        ->groupBy('produtos.id')
        ->get();

更改 config/databases.php -> mysql 数组我将 strict => true 更改为 strict => false ,你会得到答案


推荐阅读