如何修复- IlluminateDatabaseEloquentCollection{#440▼#items:[]



我想选择在用户表中有推荐用户名和角色为4的用户,并将它们存储在$refUser中,但我得到此错误。"IlluminateDatabaseEloquentCollection{#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的意思是" dump "one_answers" die "。您没有收到错误,您看到的是dd($refUser)调用的结果。

IlluminateDatabaseEloquentCollection {#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()返回一个Collection,$query->first()返回第一个匹配行(如果使用Eloquent,在模型实例中)。

相关内容

  • 没有找到相关文章

最新更新