首页 > 解决方案 > 获取每个 eloquent pviot 的最后一项

问题描述

我有这个查询来获取每个项目的最后 20 个数字,它运行良好,但它进行了大约 1400 个查询,所以它不标准!

$entire = [];
$items = Item::where('Items.ISDelete' , 0)
    ->join('ItemInfoMain' , 'ItemInfoMain.ItemId' , '=' , "Items.ItemId")
    ->select('ItemInfoMain.ItmId')
    ->get;

foreach ($items as $item) {
    $last20 = ItemInfos::where('ItmId' , $item->ItmId)
        ->orderBy('RowId' , 'desc')
        ->limit(20)
        ->get()
        ->toArray();
    $entire = array_merge($entire , $last20 );
}

我的 ItemifnoMain 模型

class ItemInfoMain extends Model
{
 protected $table = "ItemInfoMain";
 protected $primaryKey = "ItmId";
 public $timestamps = false;  
 public function itemInfo(){
        return $this->hasMany(ItemInfos::class , 'ItmId');
    }
}

我的 Iteminfos 模型

class ItemInfos extends Model
{

    protected $table = "ItemInfos";
    protected $guarded = [];
    protected $primaryKey = "ItmId";
    public $timestamps = false;
    public $incrementing  = true;

    public function itemInfoMain(){
        return $this->belongsTo(ItemInfoMain::class , 'ItmId');
    }
}

商品型号:

class Item extends Model
{
    protected $table = "Items";
    protected $primaryKey = "ItemId";
    public $timestamps = false;

    public function itemInfoMain(){
        return $this->hasMany(ItemInfoMain::class , 'ItemId');
    }
}

我期待找到最佳优化的 sql 查询 我的核心是 sql server

标签: phpsqldatabaselaraveleloquent

解决方案


推荐阅读