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

问题描述

所以我的两个模型之间有这种关系

产品.php

public function photos()
{
    return $this->hasMany('App\Photo');
}

照片.php

public function product()
{
    return $this->belongsTo('App\Product');
}

我想要做的是为每个产品只获取一张照片。这是我的查询

$my_ads = DB::table('products as p')
                    ->join('photos as pic','p.id','=','pic.product_id')
                    ->select(DB::RAW('DISTINCT(pic.product_id)'),'p.*','pic.file_path')
                    ->get();

我在这个查询中得到的结果是重复的。如果我的第一个产品有五张照片,那么该集合将有 5 个具有不同照片的相同产品实例。

我如何才能为每个产品实现这一点,我只能有一张照片?非常感谢

标签: phplaraveleloquent

解决方案


你为什么不以 Eloquent 的方式这样做呢?

App\Product::with('photos')->get();

这将检索您的所有产品及其照片,并且不会重复任何产品。


推荐阅读