用PHP/Laravel实现查询循环

用PHP/Laravel实现查询循环,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我遇到了一个问题,我使用多个查询来处理,这不是很有效。我想知道你是否知道一个更简单的方法 问题描述: 每个用户都有“邀请”该用户的人的id。然后,该用户可以邀请其他人 所以 如何使用Mysql、php和laravel获取用户1邀请的用户和他邀请的用户的完整列表(例如) 任何想法都将不胜感激 好吧,让我们假设数据库结构与此类似 表:用户 int:user\u id 国际:受邀请 其中,invested\u by是一个外键,它引用同一个表中的user\u id(users) 我创建了以下迁移来创建上

我遇到了一个问题,我使用多个查询来处理,这不是很有效。我想知道你是否知道一个更简单的方法

问题描述: 每个用户都有“邀请”该用户的人的id。然后,该用户可以邀请其他人

所以

如何使用Mysql、php和laravel获取用户1邀请的用户和他邀请的用户的完整列表(例如)


任何想法都将不胜感激

好吧,让我们假设数据库结构与此类似

表:用户 int:user\u id
国际:受邀请

其中,
invested\u by
是一个外键,它引用同一个表中的
user\u id
users

我创建了以下迁移来创建上述数据库结构(请注意,您可以使用原始MySql查询自由创建它)

现在,如果我想知道是谁邀请了ID为2的用户:

$user = User::where('user_id', 2)->first();
$invitedByUser = $user->invitedBy()->getResults();
如果我们想知道ID为1的用户邀请的用户:

$user = User::where('user_id', 1)->first();
$invitees = $user->invitees()->getResults();

我已经试过了,它的效果和预期的一样。希望这能有所帮助。

谢谢你的回答,伙计,我真的很感激你的回答,不过我的问题有点错(现在编辑好了),但我想你可能会让我走上正确的道路。@Lixi我编辑了我的回答,以给出一个工作示例。希望它能帮助您,如果您有任何问题,请随时发表评论。干杯必须澄清的是,您要的是user
1
邀请的所有用户的列表,然后是他们依次邀请的所有用户?
/**
 * Function to get the users that were invited by the current user.
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function invitees()
{
    return $this->hasMany(User::class, 'invited_by', 'user_id');
}

/**
 * Function to get the user who invited the current user.
 *
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function invitedBy()
{
    return $this->belongsTo(User::class, 'invited_by', 'user_id');
}
$user = User::where('user_id', 2)->first();
$invitedByUser = $user->invitedBy()->getResults();
$user = User::where('user_id', 1)->first();
$invitees = $user->invitees()->getResults();