在Laravel GraphQL搜索处理程序中连接表时获取用户ID而不是志愿者ID

bnl4lu3b  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(140)

当我在搜索处理程序中连接两个表时,两个表中有相同的列,我无法访问左表的值例如,如果有两个表user和volunteers,当我编写这样的搜索处理程序时,它们都有id列

$builder->join('users', 'volunteers.user_id', "=", "users.id")
  ->join('policies','volunteers.policy_id',"=","policies.id")
  ->where(function($q) use ($whereConditions){
      $q->where('users.first_name','like','%'.$whereConditions['OR'][0]['value'].'%');
      $q->orWhere('users.last_name','like','%'.$whereConditions['OR'][0]['value'].'%');
      $q->orWhere('policies.name','like','%'.$whereConditions['OR'][0]['value'].'%');
      $q->orWhere('volunteers.experiences','like','%'.$whereConditions['OR'][0]['value'].'%');
      $q->orWhere('volunteers.medical_facility','like','%'.$whereConditions['OR'][0]['value'].'%');
   });

当我查询时,它将返回用户ID作为志愿者ID
我想要志愿者ID,但我总是得到用户ID。我希望问题已经清楚了

6ss1mwsb

6ss1mwsb1#

我实现了你的问题,问题发生在我身上,但我用$builder->select('your columns')解决了它。

bakd9h0s

bakd9h0s2#

若要解决此问题,您需要确保在连接语句中使用正确的列名。如果志愿者表中有一个名为volunteer_id的列,它代表了志愿者的ID,你应该像这样更新你的代码:

$builder->join('users', 'volunteers.volunteer_id', '=', 'users.id')
->join('policies', 'volunteers.policy_id', '=', 'policies.id')
->where(function ($q) use ($whereConditions) {
    $q->where('users.first_name', 'like', '%' . $whereConditions['OR'][0]['value'] . '%');
    $q->orWhere('users.last_name', 'like', '%' . $whereConditions['OR'][0]['value'] . '%');
    $q->orWhere('policies.name', 'like', '%' . $whereConditions['OR'][0]['value'] . '%');
    $q->orWhere('volunteers.experiences', 'like', '%' . $whereConditions['OR'][0]['value'] . '%');
    $q->orWhere('volunteers.medical_facility', 'like', '%' . $whereConditions['OR'][0]['value'] . '%');
});

在上面的代码中,我假设volunteers_id列存在于volunteers表中,并表示志愿者的ID。如果volunteer_id在数据库模式中不同,请确保将其替换为正确的列名。
通过更新连接条件以使用正确的列名,您应该能够在查询结果中检索志愿者ID而不是用户ID。

相关问题