[英]Build database query in Laravel with eloquent or DB
I need your help to build a query in Laravel either eloquent or DB query would do too. 我需要您的帮助在雄辩的Laravel中构建查询,或者DB查询也可以。
My table name is Users 我的表名是Users
To see the DB structure, open the following link: 要查看数据库结构,请打开以下链接:
https://jsfiddle.net/vardaam/mvqzpb2j/ https://jsfiddle.net/vardaam/mvqzpb2j/
Every user row has 2 columns referral_code and referred_by_code which means every user can refer to someone and earn bonus similarly the same user was also been referred by some one . 每个用户行都有2列referral_code和referred_by_code列,这意味着每个用户都可以推荐 某人并获得奖励,类似地,同一用户也被某人推荐 。
I would like to return the information on page with loop in users details along with Username of the user who had referred him to this . 我想返回带有用户详细信息循环的页面上的信息,以及已将他引荐给此用户的用户名 。 To track the same I created those 2 columns in the same table ie: referral_code and referred_by_code.
为了跟踪相同内容,我在同一张表中创建了这两列,即:referral_code和referred_by_code。
I do not know how to write this in 1 query or how to combine 2 queries and get the desired results. 我不知道如何在1个查询中编写此代码,或者如何组合2个查询并获得所需的结果。
My controller code looks like below: 我的控制器代码如下所示:
$obj_users = User::get();
$codes = [];
$referrers = [];
foreach( $obj_users as $referred_by_code )
{
//Following fetches all user's referred_by_code's code
$codes[] = $referred_by_code->referred_by_code;
}
foreach ($codes as $code)
{
//Following fetches usernames of the given referred_by_code's codes
$referrers[] = User::where('referral_code', $code)->first()->username;
}
return view('users.users', compact(['users', 'paginate', 'referrers']));
The returning $users variable provides me loop of users data but I do not know how to attach those referrer's username to that object. 返回的$ users变量为我提供了用户数据循环,但是我不知道如何将那些引用者的用户名附加到该对象。
I tried my level best to describe, please ask incase what I said doesn't make sense, will be happy to provide further clarification. 我尽力描述了我的水平,如果我所说的话没有道理,请问,乐于提供进一步的说明。
Best 最好
You can add into your User
model the following relationship: 您可以在
User
模型中添加以下关系:
public function referredBy()
{
return $this->belongsTo(User::class, 'referred_code', 'referral_code');
}
In your controller you can use: 在您的控制器中,您可以使用:
$users = User::with('referredBy')->get();
return view('users.users', compact('users'));
and later in your view you can use: 然后在您看来,您可以使用:
@foreach ($users as $user)
{{ $user->username }} referred by {{ $user->referredBy ? $user->referredBy->username : '-' }}
@endforeach
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.