我想选择在用户表中有推荐用户名和角色为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,在模型实例中)。