nicolaslopezj / searchable:如何为单个表设置多个联接的配置

时间:2018-10-22 08:08:20

标签: laravel eloquent searchable

当前,我具有下面的表结构,projects表具有一个General Contact(属于用户中的一个用户),另一个是Technical User(与用户表有很多关系)。我使用了可搜索的程序包,但它只搜索常规联系人/技术联系人,而不同时搜索两者。如何为两个查询设置配置?

  

项目
  -id
  -名称
  -general_contact(用户表中的一个用户)
  -说明

     

Projects_has_tech_users
  -projects_id
  -users_id

     

用户
  -id
  -名
  -姓氏
  -电子邮件
  -密码
  -角色

这是我在项目模型中设置的可搜索配置。

protected $searchable = [
    'columns' => [
        'projects.name' => 1,
        'users.first_name' => 2,
        'users.last_name' => 2,
        'projects.description' => 3,
    ],
    'joins' => [
        'projects_has_tech_users' => ['projects.id','projects_has_tech_users.projects_id'],
        'users' => ['projects_has_tech_users.users_id', 'users.id'],
        'users' => ['projects.general_contact', 'users.id']
    ],
    'groupBy'=>'projects.id'
];

1 个答案:

答案 0 :(得分:0)

通过给联接表加上别名来获得解决方案

protected $searchable = [
    'columns' => [
        'projects.name' => 1,
        'tech.first_name' => 3,
        'tech.last_name' => 3,
        'gen.first_name' => 3,
        'gen.last_name' => 3,
        'projects.description' => 4,
    ],
    'joins' => [
        'projects_has_tech_users' => ['projects.id','projects_has_tech_users.projects_id'],
        'users as tech' => ['projects_has_tech_users.users_id', 'tech.id'],
        'users as gen' => ['projects.general_contact', 'gen.id']
    ],
    'groupBy'=>'projects.id'
];