2017-08-27 87 views
0

 My 'users' table: 我有一个'用户'表,如下图所示。当新用户登录时,他必须使用以前用户的'sponsor_id'。以前用户的'user_name'被用作新用户的'sponsor_id'。现在,我想在新用户登录时显示一些“sponsor_id”详细信息,例如sponsor_id的first_name,last_name,phone等。所有数据都保存在'users'表中。什么应该是查询,请任何人帮助我。我正在使用Laravel5.4。 我想喜欢 -从单个查询中的同一表中选择两种类型信息MYSQL

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

自连接用户表,并获取赞助细节 – Rams

+1

你应该尝试写一个JOIN类型的查询,其中加入与同桌。你可以在你选择两个用户的地方进行查询,其中一个是赞助商,另一个是另一个。 –

+0

呃这个名字是这个ID吗?如果发起人更改他们的名字怎么办? – Strawberry

回答

1

我不知道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 
+0

我不明白m或s。用户信息和赞助商信息位于同一个表中。 –

+0

它们是别名,'m'是'users'的第一个实例,'s'是第二个。 ,'m'代表用户信息,'''代表'赞助商'信息。 @ Md.RashedulHasan – sagi

0
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。

0

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

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 
} 
+0

我想显示'sponsor_id的first_name,last_name。但它显示我的用户的名字,姓氏。它显示所有数据。 –

相关问题