Bal*_*lin 5 eager-loading laravel eloquent eloquent-relationship
我目前正在研究 laravel 框架,但我遇到了一些关系和急切的加载问题。
我有三个模型 A、B 和 C
我有两个关系
默认情况下(使用模型中的 $with 属性):
所以大部分时间我都使用 A 不带 B 和 B 带 C
这是我设置关系方法和急切加载的方式
class A extends Model {
...
protected $with = [];
public function bs() {
return $this->hasMany('App\Models\B');
}
}
class B extends Model {
...
protected $with = ['cs'];
public function cs() {
return $this->hasMany('App\Models\C');
}
public function a() {
return $this->belongsTo('App\Models\A');
}
}
class C extends Model {
...
public function b() {
return $this->belongsTo('App\Models\B');
}
}
Run Code Online (Sandbox Code Playgroud)
对于特定任务,我想使用所有 B 而没有任何 C 查询 A
当我使用A::query()->with('b')C 时默认加载
所以我正在尝试使用A::query()->with('b')->without('b.c')
但它不断加载 B 到 C 的关系。
您对如何实现这一目标有任何想法吗?
谢谢你的帮助 !
该Eloquent\Model有newQueryWithoutRelationships。
我认为您可以执行以下操作:
(new A())->newQueryWithoutRelationships()->with(...)
Run Code Online (Sandbox Code Playgroud)
评论后更新
有趣的方法without()(不知道)。
看起来您可以尝试以下操作:
A::query()->with(['bs' => function($query) {
$query->without('c');
}]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1464 次 |
| 最近记录: |