laravel - 如何在 Laravel eloquent 中使用 via 对象获取数据?
问题描述
实际上,我想使用 Model 对象而不是通过 Model 外观来获取数据,如下所述。
$user = $this->getGuard()->user();
上面的用户是当前登录的用户,即
"id": 6,
"name": "kuser",
"email": "kuser@gmail.com",
"phone": "03345154067",
"is_subscribed": 0,
"subscription_date": null
但是,当我尝试$user
使用其相关模型(如卡片)获取相同的对象时,通过执行$user->with(['cards'])->first();
它会给出用户表的第一条记录,如下所述。
"id": 1,
"name": "admin",
"email": "admin@gmail.com",
"phone": "03056494616",
"is_subscribed": 1,
"subscription_date": "2019-10-08",
"cards": []
上面提到的记录是用户对象。这是我的用户表的第一条记录。
其实,我很期待。
"id": 6,
"name": "kuser",
"email": "kuser@gmail.com",
"phone": "03345154067",
"is_subscribed": 0,
"subscription_date": null
及其相关的模型卡,如
"id": 6,
"name": "kuser",
"email": "kuser@gmail.com",
"phone": "03345154067",
"is_subscribed": 0,
"subscription_date": null
"cards":[] // array of cards those belongs to it.
解决方案
您可以使用 Lazy Eager Loading,您不必再次查询用户,您已经拥有它:
$user = $this->getGuard()->user();
$user->load('cards');
推荐阅读
- c++ - 是什么导致“指定给 RtlValidateHeap(01480000, 014A2900) C-SDL-Blackjack.exe 的地址无效已触发断点。” 在这个项目中?
- c# - 当数据从 C# 到达时,Angular 中的 getDay() 未定义
- java - 如何在可见的两个视图之间切换?
- linux - 套接字:带有 xenomai 的树莓派上的协议错误不支持地址系列
- python - 在 kivy 画布内播放视频
- android - 如何在 Koin 中使用记录器?
- python - 如何修复 Pyinstaller 属性错误?Python Py Qt5
- kubernetes - Azure Kubernetes Nginx-Ingress 客户端证书身份验证问题
- html - 无法在 webextension 的 contenteditable 中输入斜杠 ('/')
- linux - 在 Linux 中使用自定义规则在多个端口上运行的 SSH 服务