nicolaslopezj / searchable: как настроить конфигурацию для нескольких объединений с одной таблицей - PullRequest
0 голосов
/ 22 октября 2018

В настоящее время у меня есть приведенная ниже структура таблицы. Таблица проектов имеет один общий контакт (принадлежит одному пользователю из пользователей), а другой - технический пользователь (многие ко многим относятся к таблице пользователей).Я использовал пакет с возможностью поиска, но он ищет только общие контакты / технические контакты, но не для обоих.Как настроить конфигурацию для обоих запросов?

Проекты
- 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 голосов
/ 22 октября 2018

Я нашел решение, указав псевдоним с таблицей соединений

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'
];
...