在 Laravel 中搜索并获取特定用户
Searching and getting specific users in Laravel
我在用户之间有关系,我想搜索并从连接的用户那里获取集合。示例:
用户:
ID: 1 | Nikola - he is TRAINER
ID: 2 | Test - he is his client
客户培训师Table:
trainer_id | client_id | status
1 | 2 | 1
当trainer搜索特定用户时,我想只搜索状态为1并且他们之间有关系的用户。
这是我当前的代码:
if(isset($_GET['type'])){
$names = explode(" ", $_GET['type']);
$klijenti = User::where(function($query) use ($names) {
$query->whereIn('name', $names);
$query->orWhere(function($query) use ($names) {
$query->whereIn('surname', $names);
});
})->orderBy("last_seen","DESC")->get();
print_r($klijenti);
if(empty($_GET['type'])){
$klijenti = $user->allclients;
}
}
我不知道我是否完全理解您的要求,但这是一种利用关系的解决方案:
将此添加到您的 User
模型中。这假设您的“ClientTrainer”Table 被称为 client_trainers。
public function clients()
{
return $this->belongsToMany('App\User', 'client_trainers', 'trainer_id', 'client_id')
->wherePivot('status', 1);
}
选项 1
现在您应该能够执行这样的查询,假设 Auth::user()
return 当前登录的培训师:
$clients = Auth::user()->clients()->whereIn('name', $names)
->orWhereIn('surname', $names)
->orderBy("last_seen","DESC")->get();
或者让一个培训师的所有客户只做类似的事情
$clients = Auth::user()->clients()->get();
选项 2
如果你想独立于单个训练师进行搜索,你可以这样做:
$clients = User::has('clients')
->whereIn('name', $names)
->orWhereIn('surname', $names)
->orderBy("last_seen","DESC")->get();
第一部分 User::has('clients')
应该只有 return 用户在 client_trainers table.[=18= 中至少有 status = 1
的客户端]
我在用户之间有关系,我想搜索并从连接的用户那里获取集合。示例:
用户:
ID: 1 | Nikola - he is TRAINER
ID: 2 | Test - he is his client
客户培训师Table:
trainer_id | client_id | status
1 | 2 | 1
当trainer搜索特定用户时,我想只搜索状态为1并且他们之间有关系的用户。
这是我当前的代码:
if(isset($_GET['type'])){
$names = explode(" ", $_GET['type']);
$klijenti = User::where(function($query) use ($names) {
$query->whereIn('name', $names);
$query->orWhere(function($query) use ($names) {
$query->whereIn('surname', $names);
});
})->orderBy("last_seen","DESC")->get();
print_r($klijenti);
if(empty($_GET['type'])){
$klijenti = $user->allclients;
}
}
我不知道我是否完全理解您的要求,但这是一种利用关系的解决方案:
将此添加到您的 User
模型中。这假设您的“ClientTrainer”Table 被称为 client_trainers。
public function clients()
{
return $this->belongsToMany('App\User', 'client_trainers', 'trainer_id', 'client_id')
->wherePivot('status', 1);
}
选项 1
现在您应该能够执行这样的查询,假设 Auth::user()
return 当前登录的培训师:
$clients = Auth::user()->clients()->whereIn('name', $names)
->orWhereIn('surname', $names)
->orderBy("last_seen","DESC")->get();
或者让一个培训师的所有客户只做类似的事情
$clients = Auth::user()->clients()->get();
选项 2
如果你想独立于单个训练师进行搜索,你可以这样做:
$clients = User::has('clients')
->whereIn('name', $names)
->orWhereIn('surname', $names)
->orderBy("last_seen","DESC")->get();
第一部分 User::has('clients')
应该只有 return 用户在 client_trainers table.[=18= 中至少有 status = 1
的客户端]