Php Laravel:在一对多关系上选择Distinct
所以我的两个模型之间有这种关系 Product.phpPhp Laravel:在一对多关系上选择Distinct,php,laravel,eloquent,Php,Laravel,Eloquent,所以我的两个模型之间有这种关系 Product.php public function photos() { return $this->hasMany('App\Photo'); } public function product() { return $this->belongsTo('App\Product'); } Photo.php public function photos() { return $this->hasMany('App\
public function photos()
{
return $this->hasMany('App\Photo');
}
public function product()
{
return $this->belongsTo('App\Product');
}
Photo.php
public function photos()
{
return $this->hasMany('App\Photo');
}
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个相同产品的实例,其中包含不同的照片
我如何才能做到每种产品只有一张照片?非常感谢你你为什么不以雄辩的方式来做这件事
App\Product::with('photos')->get();
这将检索您的所有产品及其照片,并且不会重复任何产品。您为什么不以有说服力的方式这样做
App\Product::with('photos')->get();
这将检索您的所有产品及其照片,并且不会重复任何产品。在eloquent中,您可以轻松完成此操作
Product::with([
'photos' => function($q){
$q->take(1);
}
])->get();
在雄辩中,你可以很容易地做到
Product::with([
'photos' => function($q){
$q->take(1);
}
])->get();