php - Laravel Eloquent 根据关系字段只检索某些行

标签 php laravel orm laravel-5 eloquent

我有很多模型,我相信我已经正确地建立了关系。

当且仅当 active 时,我想从表中检索所有模型外键表的列为真。

我尝试了多种变体,但都无济于事。

下面是设置。

该表的问题称为device , 它指向一个名为 dep 的表.

DEVICE model与DEP有如下关系

public function dep() {

    return $this->belongsTo('App\Dep');

}

DEP模型有一个名为 active 的列,设置为 truefalse .

我应该使用什么 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();

这将获取所有具有 depactive 字段为 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/

相关文章:

php - 电子商务网站 build 需要注意哪些问题?

javascript - Angular.js 和 PHP : Keeping login information when page refresh

php - GAE 过滤器 AdminMessage 收件人

laravel - SQLSTATE[HY000] : General error - create an account

php - 将 laravel 对象转换为数组

php - Laravel:在自定义类中重定向?

java - 自定义 hibernate 实体持久性

java - 将 select 语句放在 Hibernate 事务上

orm - PRISMA:在更新方法中的 where 子句上出现类型错误

php - MySQL大表数据选取