php - Laravel - 在某些情况下类似功能不起作用
问题描述
我是 Laravel 6 的新手,我对 where() 函数有疑问。
我有一个用户模型和一个文章模型,在我的用户模型中,我将关系设置为 hasMany(App\Article::class),这意味着用户可以拥有许多文章。假设用户 1 有几篇标题为“如何...”教程的文章。
在修补程序中,如果我这样做:
$user->articles()->where('title', 'like', '%how to%')->get();
它显示了所有带有“如何”字样的标题,但是如果我这样做:
$user->articles->where('title', 'like', '%how to%'); //but $user->articles->where('id', 2); works perfectly
它返回空白结果。为什么?
解决方案
那是因为您的第一个 where()$user->articles()->where('title', 'like', '%how to%')->get();
构建了一个 SQL 查询(QueryBuilder https://laravel.com/docs/6.x/queries)。
你的第二个 where() 试图从一对一的关系中获取一个值。如果你想从多对多关系中获取一个值,你需要括号——你必须使用函数$user->articles()
。
推荐阅读
- c - 用 c 舍入
- python - 如何仅将股票名称和实时价格导出到 .txt 文件中,而中间没有任何额外的行或不需要的数据?
- php - 从本地 php 服务器连接到远程 Phymyadmin Mysql 服务器
- html - 具有自定义高度的 HTML5 视频响应
- bitrise - 在 Bitrise 上,我可以让两个工作流程独立更新同一个 PR 上的单独 GitHub 检查吗?
- javascript - 如何在无限滚动上创建渐变背景?
- javascript - MERN Heorku 应用程序在本地工作,将数据存储在 MLAB 中,但无法使用部署链接工作
- javascript - Select2 为选项设置了错误的值
- regex - 使用正则表达式过滤字符串
- erlang - 在 Erlang 热代码重载功能中触发更新消息