简体   繁体   English

用雄辩或DB在Laravel中建立数据库查询

[英]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_codereferred_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM