Laravel 在关系对象上的位置

2023-12-29

我正在使用 Laravel 5.0 开发一个 Web API,但我不确定我正在尝试构建的特定查询。

我的课程如下:

class Event extends Model {

    protected $table = 'events';
    public $timestamps = false;

    public function participants()
    {
        return $this->hasMany('App\Participant', 'IDEvent', 'ID');
    }

    public function owner()
    {
        return $this->hasOne('App\User', 'ID', 'IDOwner');
    }
}

and

class Participant extends Model {

    protected $table = 'participants';
    public $timestamps = false;

    public function user()
    {
        return $this->belongTo('App\User', 'IDUser', 'ID');
    }

    public function event()
    {
        return $this->belongTo('App\Event', 'IDEvent', 'ID');
    }
}

现在,我想获取特定参与者的所有事件。 我尝试过:

Event::with('participants')->where('IDUser', 1)->get();

but the where条件应用于Event而不是在其上Participants。以下给了我一个例外:

Participant::where('IDUser', 1)->event()->get();

我知道我可以这样写:

$list = Participant::where('IDUser', 1)->get();
for($item in $list) {
   $event = $item->event;
   // ... other code ...
}

但向服务器发送这么多查询似乎效率不高。

执行任务的最佳方式是什么where通过使用 Laravel 5 和 Eloquent 的模型关系?


对关系执行此操作的正确语法是:

Event::whereHas('participants', function ($query) {
    return $query->where('IDUser', '=', 1);
})->get();

这将返回参与者的用户 ID 为 1 的事件。如果参与者的用户 ID 不是 1,则不会返回该事件。

阅读更多内容https://laravel.com/docs/5.8/eloquent-relationships#eager-loading https://laravel.com/docs/5.8/eloquent-relationships#eager-loading

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 在关系对象上的位置 的相关文章

随机推荐

  • 在 C++ 中使用 auto 声明变量有缺点吗?

    看起来auto是 C 11 中添加的一个相当重要的功能 它似乎遵循许多较新的语言 与 Python 这样的语言一样 我没有看到任何显式的变量声明 我不确定是否可以使用 Python 标准 使用有什么缺点吗auto声明变量而不是显式声明它们
  • 如何从 Java 中的 BigInteger 获取无符号字节数组?

    我需要转换一个大整数 https docs oracle com javase 7 docs api java math BigInteger html以大端格式编码的无符号整数 但我遇到了问题BigInteger toByteArray
  • Python 2:ValueError:以 10 为基数的 int() 的文字无效:'20.0'

    我在 python 数学中遇到了一个小问题 所以我有一些变量 x y and answer gt gt gt x 20 gt gt gt y 21 gt gt gt answer x y 100 gt gt gt answer 0 所以它打
  • PostgreSQL 更新时区偏移

    有什么快速简便的方法来校正时区TIMESTAMP WITH TIME ZONE字段不小心输入了错误的时区 就我而言 以下记录被错误地输入为 UTC 而不是美国 太平洋地区 t0 t1 what 2011 06 01 13 00 00 00
  • 无法使用 install.packages 安装 R-forge 软件包

    This http thread gmane org gmane comp lang r finance 10265 question http thread gmane org gmane comp lang r finance 1002
  • 用户在线离线状态-离线状态问题

    首先这是相关问题PHP 在线离线状态 https stackoverflow com questions 13201579 php online offline status 13201617 comment17974371 1320161
  • 模拟移动设备上的点击事件

    我在窗口加载时有一个点击事件 如下所示 function myFunction document getElementById myEl click works on desktop not on mobile window onload
  • 解析失败:Lcom/google/android/gms/common/api/Api$zzf;

    当我们运行应用程序的 apk 文件时 我收到此错误 在build gradle我们设置multidex并编译multidex存在于Gradle文件中 我们将 Firebase 版本更改为上方和下方 但这对我们不起作用 这是我们在运行控制台的
  • 提取每第 n 个字母(数字)

    我有一个包含行 名称 空格和零和一字符串的文件 我需要提取零和一字符串的每第 5 个字符 对结果求和 如果总和不为 0 保存名称到另一个文件中 1rt2 0001000000100000000000001010000100000000010
  • 框架“可扩展性良好”是什么意思?

    当阅读有关框架 net ruby on Rails django spring 等 时 我不断地看到某些框架的扩展性很好或不好 当有人说框架 可扩展性良好 时 这是什么意思 而说框架 可扩展性不好 又是什么意思 谢谢 当您根据并发用户绘制一
  • 简单的 Javascript 数学函数 - 加法/不起作用?

    这是我的功能 var ans X X Y Z 当我进入10 20 and 10 分别 加法位的结果为2010并不是30 我怎样才能解决这个问题 确保首先将字符串转换为数字 var X 10 var Y 20 var Z 10 X X una
  • 如何在 SQL*Plus 中打开存储过程并对其进行编辑

    我需要对一个过时的机器上的旧 Oracle 存储过程进行一些更改 该机器保留下来运行旧的遗留进程 我唯一可以连接到数据库的工具是 SQL加 如何将存储过程加载到内存中以在 SQL 中进行编辑Plus 我在网上找到的教程没有解释这是如何完成的
  • git push 说一切都是最新的,而实际上它绝对不是

    我有一个公共存储库 没有其他人对其进行分叉 拉取或其他任何操作 我对一个文件做了一些小的更改 成功提交它们 并尝试推送 它说 一切都是最新的 没有分支机构 我对 git 非常非常陌生 我不明白到底发生了什么 git remote show
  • 如何在SQL Server中为自动增量列指定特定值?

    我在 sql server 中有一个自动增量标识列 但我想为其中一行指定特定值 因此 编号方案如下 1 2 999 for the reserved entry 3 n 我怎样才能做到这一点 你需要使用IDENTITY INSERT SET
  • 适用于 iOS 的 Elasticsearch 客户端

    有人知道适用于 iOS 的 elasticsearch 客户端库吗 如果它也用 swift 编写 那就太好了 弹性搜索 客户端 部分显示了多个平台的多个库 但没有显示 iOS 的任何内容 我觉得一定有人这样做了 Cheers 我怀疑没有人这
  • Rust:使用结构向量的极坐标中的数据帧

    Problem 我想读入数据polars数据帧来自mysql数据库 我在用sqlx sqlx生成结构向量 例如 Vec
  • 安装oracle 11g后sql plus打不开

    我安装了 oracle 11g 我试图从命令提示符打开 sqlplus 但它在不到一秒的时间内打开和关闭 我也尝试从安装位置打开 sqlplus 它仍然显示出相同的行为 谁能帮我解决一下 由于其他一些错误 我已经卸载并安装了两次 oracl
  • Pyparsing 支持上下文相关语法吗?

    如果我的术语不正确 请原谅我 也许只要用 正确 的词语来描述我想要的东西就足以让我自己找到答案 我正在开发 ODL 对象描述语言 的解析器 据我所知 这是一种神秘的语言 现在仅由 NASA PDS 行星数据系统 这是 NASA 向公众提供数
  • git Android Studio 使用的 ssh-key

    我需要连接到一个组织 因此需要提供公共 ssh 密钥 但是 我不确定 Android Studio 使用哪个 ssh 密钥 我发现自己对 Android Studio 中的各种 ssh 选项感到困惑 它是否只是使用我当前 git 安装生成的
  • Laravel 在关系对象上的位置

    我正在使用 Laravel 5 0 开发一个 Web API 但我不确定我正在尝试构建的特定查询 我的课程如下 class Event extends Model protected table events public timestam