我有很多模型,我相信我已经正确地建立了关系。
当且仅当 active
时,我想从表中检索所有模型外键表的列为真。
我尝试了多种变体,但都无济于事。
下面是设置。
该表的问题称为device
, 它指向一个名为 dep
的表.
DEVICE
model与DEP有如下关系
public function dep() {
return $this->belongsTo('App\Dep');
}
DEP
模型有一个名为 active
的列,设置为 true
或 false
.
我应该使用什么 Eloquent 命令来返回所有Devices
active
在哪里DEP
的领域表格是真的吗?
目前我必须获得所有 DEP
模型,然后仅在 active 字段设置为 true 时才获取设备,但我相信必须有更优雅的方法。
谢谢。
最佳答案
如果你想根据相关模型中字段的存在来限制结果,你想看看whereHas
方法。
$devices = Device::whereHas('dep', function($query) {
$query->where('active', '=', true); // Replace true with 1 if you aren't using casts
})->get();
这将获取所有具有 dep
且 active
字段为 true 的设备。但是,这不会与 Device
一起获取 dep
。如果你想要那样,那么只需使用 whereHas
和预加载,就像你通常这样做的那样:
$devices = Device::with('dep')->whereHas('dep', function($query) {
$query->where('active', '=', true);
})->get();
关于php - Laravel Eloquent 根据关系字段只检索某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962023/