所以我在两个模型之间有这种关系
Product.php
public function photos()
{
return $this->hasMany('App\Photo');
}
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张照片,则该收藏集中将有5个相同产品的实例具有不同的照片。
如何实现每个产品只能有一张照片的目标?非常感谢
答案 0 :(得分:1)
您为什么不以口才做这件事?
App\Product::with('photos')->get();
这将检索您所有的产品及其照片,并且不会重复任何产品。
答案 1 :(得分:1)
雄辩的话,您可以轻松做到。
Product::with([
'photos' => function($q){
$q->take(1);
}
])->get();