我有两个表用户和customer_details。我想获取由Auth::user((创建的用户。created_by列位于customer_details表中。
用户表
| id | name | email | status |
|-----------------------------------------------|
| 1 | Admin | admin@email.com | Active |
| 2 | Customer | user@email.com | Active |
客户详细信息表
| id | user_id | added_by | address |
|-------------------------------------------|
| 1 | 2 | 1 | NY City |
这是我的查询
$customers = User::role('Customer')->whereIn('status', ['Active'])->get();
想要获取added_by是当前身份验证用户的记录
$customers = User::role('Customer')->whereIn('added_by', Auth::id())->get();
我认为这应该有助于
这里我们使用Auth::id()
来获取当前用户的id,然后使用雄辩来搜索它
我认为这里added_by列包含ID;
在CustomerDetail
模型中创建关系:
public function addedBy()
{
return $this->belongsTo(User::class, 'added_by');
}
然后,您可以使用以下关系进行查询:
CustomerDetail::whereHas('addedBy', function($query) {
return $query->where('id', auth()->id());
})->get();
此查询返回当前登录用户创建的所有客户。
要让所有用户都拥有由当前登录用户创建的客户,请添加一个新的关系,现在添加到用户模型中:
public function customerDetail()
{
return $this->hasOne(CustomerDetail::class, 'added_by');
}
并通过登录用户创建的客户查询用户:
User::role('Customer')->whereHas('customerDetail', function($query) {
return $query->where('added_by', auth()->id());
})
->whereIn('status', ['Active'])
->get();