php - 使用 eloquent 或 DB 在 Laravel 中构建数据库查询

标签 php mysql laravel eloquent laravel-5.3

我需要你的帮助来在 Laravel 中构建一个查询,无论是 eloquent 还是 DB 查询都可以。

我的表名称是 Users

要查看数据库结构,请打开以下链接:

https://jsfiddle.net/vardaam/mvqzpb2j/

每个用户行都有 2 列referral_codereferred_by_code,这意味着每个用户都可以推荐某人并获得奖金,同样,同一用户也可以被某人推荐

我想返回页面上的信息,其中包含用户详细信息中的循环以及将他推荐给此信息的用户的用户名。为了跟踪相同的情况,我在同一个表中创建了这两列,即:referral_code 和refered_by_code。

我不知道如何在 1 个查询中编写此内容,也不知道如何组合 2 个查询并获得所需的结果。

我的 Controller 代码如下所示:

$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 变量为我提供了用户数据循环,但我不知道如何将这些引用者的用户名附加到该对象。

我已尽力描述,如果我说的话没有意义,请询问,我们很乐意提供进一步的说明。

最佳

最佳答案

您可以将以下关系添加到您的User模型中:

public function referredBy()
{
    return $this->belongsTo(User::class, 'referred_code', 'referral_code');
}

在你的 Controller 中你可以使用:

$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

关于php - 使用 eloquent 或 DB 在 Laravel 中构建数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47905327/

相关文章:

php - HTTP Post 参数以 json 编码传递给 $_POST

MYSQL order by 坚持使用filesort

mysql - 个人和全局消息数据库设计

Php mysql - 获取最近几天的值和条目总数

php - 从 Javascript 同一文件调用 php 函数

java - Mybatis如何运行sql "desc table"

mysql - 数据库设计建议

php - Laravel 函数与数据透视表中的组合

php - 将 OS X 更新到 El Capitan 后的 Mcrypt 问题

php - 介绍Python