繁体   English   中英

在单个查询MYSQL中从同一表中选择两种类型的信息

[英]Select two types information from same table in single query MYSQL

我的“用户”表: 我有一个像下面这样的“用户”表。 当新用户登录时,他必须使用先前用户的一个“ sponsor_id”。 先前用户的“ user_name”被用作新用户的“ sponsor_id”。 现在,我想在新用户登录时显示一些'sponsor_id'详细信息,例如Sponsor_id的first_name,last_name,电话等。所有数据都保存在'users'表中。 应该是什么查询,请任何人帮助我。 我正在使用Laravel5.4。 我正在尝试类似的东西-

$sponsor_info = DB::table('users')
            ->select('first_name','last_name','phone')
            ->where('user_name', '=', '$sponsor_id')
            ->first();

我不知道laravel,但我给解决方案plz转换为laravel。

select m.*,
       s.first_name,
       s.last_name,
       s.phone 
from user m 
left join user s 
 on m.sponsorid=s.userid
SELECT 
   user.id,
   user.user_name,
   user.sponsor_id,
   sponsoredUser.user_name
   FROM user
   INNER JOIN user AS sponsoredUser ON user.sponsor_id = sponsoredUser.id
WHERE user.id = $id

在这里我使用用户表2次。 第一个用于该用户,第二个用于获取该赞助用户的信息。 这就是为什么我给第二个用户表名称一个别名为sponsoredUser 希望您将这个查询转移到laravel中。

将此功能添加到您的用户模型中:

public function sponsor()
{
   $this->belongsTo(App\User::class,'sponsor_id','user_name');
}

现在您可以进行以下查询:

$users = App\User::with('sponsor')->get();

所有用户都将加载“赞助者”关系。

Foreach ($users as $user){
   $user->sponsor->first_name;
   // Etc
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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