Laravel Eloquent 使用限制的即时加载
[!IMPORTANT] 该包的代码已合并到 Laravel 11+ 中,现在支持原生的即时加载限制。
config/database.php 文件中,为 MySQL 连接设置 'strict' => false,。| Laravel | 包 |
|---|---|
| 10.x | 1.8 |
| 9.x | 1.7 |
| 8.x | 1.6 |
| 7.x | 1.5 |
| 6.x | 1.4 |
| 5.8 | 1.3 |
| 5.5–5.7 | 1.2 |
在父类和相关模型中都使用 HasEagerLimit 特征,并对关系应用 limit()/take():
class User extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
public function posts()
{
return $this->hasMany('App\Post');
}
}
class Post extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}
$users = User::with(['posts' => function ($query) {
$query->latest()->limit(10);
}])->get();通过应用 limit(1) 来提高 HasOne/HasOneThrough/MorphOne 关系的性能:
class User extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
public function latestPost()
{
return $this->hasOne('App\Post')->latest()->limit(1);
}
}
class Post extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}
$users = User::with('latestPost')->get();您还可以将 offset()/skip() 应用于您的关系:
php
class User 扩展
暂无开放 Issues,或尚未同步最近议题。