使用Laravel比较不同表中的两个字段

时间:2019-04-05 13:19:13

标签: mysql laravel join

我有两个表employee和customers,我给出了下面的模式。

Customers('id' , 'username', 'location');

Employees('id' , 'EmployeeID' , 'CustomerID', 'location');

当前,我可以使用查询来检索客户详细信息,例如以下查询,请注意,这是当用户登录到系统时,因此Auth ::

$customerQuery1 = DB::table('customer')
            ->where('id', '!=', Auth::id())  
            ->where('item', '=' , Auth::customer()->recommendation)  
            ->get();

每个员工都有很多客户,我希望其他客户看到其他客户项目,因此我在客户表中附加了CustomerID字段,该字段是外键,并且与id字段相关。

我已经尝试了以下类似的方法,但是我认为我可能需要加入查询,但是不确定。

$query2 =  DB::table('Customer','Employee')
        ->select('username')
        ->where(['EmployeeID' => Auth::id(), 'CustomerID' => 'id']) 
        ->get(); 

$query2 =  DB::table('Customer')
        ->select('username')
        ->join('Employee', 'Customer.id', '=', 'Employee.CustomerID')             
        ->where(['EmployeeID' => Auth::id(), 'CustomerID' => 'id']) 
        ->get(); 

然后我将这些值返回到我的刀片文件中,如下所示

 return view ('pages.dashboard')
 ->with('query1',$query1)

然后我在刀片文件中使用php缩进来返回用户数据

 @foreach ($query1 as $Userfound)
 {{ $Userfound->username}}</p> 

@endforeach

需要用普通英语进行实际查询

所以我需要选择一个customer,其中CustomerID == id

注意:ID来自客户表,客户ID存储在员工表中。

1 个答案:

答案 0 :(得分:1)

您可以使用Laravel创建模型,例如:

Employee.php

public function customers()
{
    return $this->hasMany('App\Customer');
}

Customer.php

public function employee()
{
    return $this->belongsTo('App\Employee');
}

您可以这样访问:

$customer = Customer::where('id',Auth::user()->id)->firstOrFail();

$employee = Employee::where('id',Auth::user()->id)->firstOrFail();

并查看员工的客户:

$employee->customers()->get();

或者查看$customer雇主的其他客户:

$customer->employee()->customers()->get();