Laravel关系很慢

时间:2019-02-09 20:37:37

标签: laravel laravel-5 laravel-4 eloquent laravel-5.2

我尝试运行此代码

Item::with('product_save')->whereHas('product_save', function($q){ 
    $q->where('user_id', 4);
});

使用

paginate(20);

项目模型:

    class Item extends Model
{
    protected $table = 'products';

    public function product_save()
    {
        return $this->hasOne('App\Product_save','product_id')->where('user_id', Auth::user()->id);
    }
}

但是太慢了,我的数据库有超过100万条记录。

paroduct_saves表: enter image description here

谢谢

2 个答案:

答案 0 :(得分:0)

在您的Tablke上创建索引,如下所示:

CREATE INDEX index_name
ON table_name (column1, column2, ...);

答案 1 :(得分:0)

在ProductSave模型中添加以下关系:

use Illuminate\Database\Eloquent\Model;
class ProductSave extends Model
{
    protected $table='product_saves';
    public $primaryKey='id';


         public function product(){
         return $this->belongsTo('App\Product','product_id')->where('active',1);
    }

}

现在在您的控制器中尝试以下操作:

$products=ProductSave::where('user_id',4)->with('product')->paginate(20);