php - Laravel - 通过检查数据库中的数组中是否存在值来过滤集合
问题描述
我想根据存储在表中的数组中是否存在单个值来返回一组帖子。
在我的帖子表中,我有常规的列名,例如“title”、“body”和“slug”。我正在使用同一个表管理多个站点,因此我有一个额外的列名“site_ids”。当用户创建一个帖子时,他们选择他们想要发布的站点,并将站点 ID 存储为一个数组(例如 [1,2])
-----------------------------------------------
| Title | Site_ids | Slug |
-----------------------------------------------
| Test Title |[1,2,3] |test-title |
-----------------------------------------------
| Another Title |[1,6] |another-title |
-----------------------------------------------
现在我正在创建一个 API 来返回所有 site_id 为 1 的帖子。如何实现?这是我的 PostController 中的当前代码
API 路线
Route::get('/{site_id}/posts','PostController@index')->name('Show Posts');
代码:
public function index($site_id)
{
// Return all posts by id
$posts = Post::whereIn('sites', $site_id)->get();
return new PostCollection($posts);
}
我收到此错误消息
为 foreach() 提供的参数无效
我在这里做错了什么?
解决方案
推荐阅读
- amazon-web-services - 从 AWS 服务发布到 AWS IoT Core 主题
- firebase - 同一firebase项目中不同应用的不同身份验证集
- python - ModuleNotFoundError:在虚拟环境中运行服务器时没有名为“django”的模块
- spring - Spring security + JWT 403 禁止错误
- firebase - 停止在缓存中保存 Flutter Web Firebase 托管
- kubernetes - Knative 中的服务编排
- postgresql - Postgres查询需要很长时间
- amazon-web-services - Redshift Cluster Resize [磁盘空间不足]
- javascript - 创建新日期时日期无效?
- python - 在 Neo4j 密码中使用可选匹配范围内的地图