php - 如何修复 - Illuminate\Database\Eloquent\Collection {#440 ▼ #items: [] }
问题描述
我想在 users 表中选择具有推荐用户名和角色 4 的用户并将它们存储在 $refUser 中,但出现此错误。“照亮\数据库\雄辩\集合 {#440 ▼ #items: [] }”
$new_ref_user = $user->referal;
$itr_cnt = 0;
while ($itr_cnt <= $ref_cnt-1)
{
$refUser = User::where('username', $new_ref_user)->where('role', 4)->get();
dd($refUser);
if(count($refUser) > 0)
{
$ref = new ref;
$ref->user_id = $user->id;
$ref->username = $new_ref_user;
请问,做错了什么?谢谢你的帮助
解决方案
dd
意思是“倾倒和死亡”。您没有收到错误,而是看到了dd($refUser)
调用的结果。Illuminate\Database\Eloquent\Collection {#440 ▼ #items: [] }
是一个空集合。
您可以使用一个查询一次获取所有用户,然后循环遍历这些用户,而不是在循环中查询数据库。我不知道$ref_cnt-1
你的代码在哪里以及为什么你有一个循环,但你可以做这样的事情。另外,检查拼写。它应该是referral
还是 var 拼写错误?是ref
模型类的名称吗?我建议UserReferral
改用这个名字。
如果$user->referral
是一个数组:
User::whereIn('username', $user->referral)
->where('role', 4)
->get()
->each( function ($ref) use ($user) {
$model = new UserReferral;
$model->user_id = $user->id;
$model->username = $ref->username;
$model->save();
});
如果$user->referral
只是一个字符串 ( username
):
$ref = User::where('username', $user->referral)->first();
if ($ref) {
$model = new UserReferral;
$model->user_id = $user->id;
$model->username = $ref->username;
$model->save();
}
请注意,$query->get()
返回 aCollection
并$query->first()
返回第一个匹配行(如果使用 Eloquent,则在模型实例中)。
推荐阅读
- php - 使用反斜杠访问对象属性
- android - 当应用程序在后台时,Android altbeacon 的间隔范围
- r - 值在加载到 R 时被转换
- python - 如何将旧的 python 2.7.x 版本升级到 2.7.16?
- oauth-2.0 - 使用 Azure AD 正确授权策略以保护 CLI 到 REST API
- python - Scipy 优化器在改变指定参数的方式时爆炸/发散
- javascript - 使用 c# 创建 WebAssembly
- javascript - MQTT.js 和 Webpack - “WS 不是构造函数”
- python - 当长度不相等时,如何在 Python 中交错两个字符串?
- python - Istio 策略未对 JWT 进行身份验证