Php 使用Elounce或DB在Laravel中构建数据库查询
我需要你的帮助在Laravel中构建一个查询,雄辩或DB查询也可以 我的表名是Users 要查看数据库结构,请打开以下链接: 每个用户行都有两列参考\代码和参考\代码,这意味着每个用户都可以参考某人,并获得奖金,同样,同一用户也被某个人参考 我想返回用户详细信息中带有循环的页面上的信息,以及向他推荐此的用户的用户名。为了跟踪相同的数据,我在同一个表中创建了这两列,即:reference_code和refered_by_code 我不知道如何在一个查询中编写这个,或者如何组合两个查询以获得所需的结果 我的控制器代码如下所示:Php 使用Elounce或DB在Laravel中构建数据库查询,php,mysql,laravel,eloquent,laravel-5.3,Php,Mysql,Laravel,Eloquent,Laravel 5.3,我需要你的帮助在Laravel中构建一个查询,雄辩或DB查询也可以 我的表名是Users 要查看数据库结构,请打开以下链接: 每个用户行都有两列参考\代码和参考\代码,这意味着每个用户都可以参考某人,并获得奖金,同样,同一用户也被某个人参考 我想返回用户详细信息中带有循环的页面上的信息,以及向他推荐此的用户的用户名。为了跟踪相同的数据,我在同一个表中创建了这两列,即:reference_code和refered_by_code 我不知道如何在一个查询中编写这个,或者如何组合两个查询以获得所需的
$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']));
返回的$users变量为我提供了用户数据循环,但我不知道如何将这些引用者的用户名附加到该对象
我尽力描述我的水平,如果我所说的没有意义,请询问,我很乐意提供进一步的澄清
最佳您可以将以下关系添加到
用户
模型中:
public function referredBy()
{
return $this->belongsTo(User::class, 'referred_code', 'referral_code');
}
在控制器中,您可以使用:
$users = User::with('referredBy')->get();
return view('users.users', compact('users'));
@foreach ($users as $user)
{{ $user->username }} referred by {{ $user->referredBy ? $user->referredBy->username : '-' }}
@endforeach
稍后在您的视图中,您可以使用:
$users = User::with('referredBy')->get();
return view('users.users', compact('users'));
@foreach ($users as $user)
{{ $user->username }} referred by {{ $user->referredBy ? $user->referredBy->username : '-' }}
@endforeach
非常感谢Marcin Nabialek,您的解决方案不仅非常有效,而且代码质量给我留下了深刻的印象。再次感谢。@ChetanChitte很高兴我能帮忙:)