LaravelRUS / SleepingOwlAdmin

🦉 Administrative interface builder for Laravel (Laravel admin)
http://sleepingowladmin.ru/
MIT License
800 stars 216 forks source link

Не работает поиск в datatables() при отображении связей #923

Closed Atmden closed 5 years ago

Atmden commented 6 years ago

ru

Версия в композере

laravelrus/sleepingowl 5.6.4

Что надо сделать что бы увидеть ошибку?

При отображении модели в ondisplay(), с данными из другой модели (релейшн данные) не происходит поиск при включенном ->setDisplaySearch(true)

В одной из ишью видел решение:

->setApply(function ($query) {
                if (Input::get('search.value')) {
                    $query->leftJoin('shareholders', 'shareholders.id', '=', 'users.shareholder_id');
                }
            })

Так поиск работает. Но при его использовании, в ссылке на редактирование записи меняется id на релейшную модель. Меняется именно id параметр. Ссылка остается этой секции.

Записал видео с проблемой: https://www.youtube.com/watch?v=v6mSKvCkZzc

sngrl commented 5 years ago

Я решал подобную проблему при сортировке: https://github.com/LaravelRUS/SleepingOwlAdmin/pull/937/commits/f90978d13c07b8ec3274f12644476a6b429f67b4

Можешь посмотреть, суть проблемы должна быть ясна. Поиском по всей таблице я не пользуюсь, но вероятно там что-то из этой же серии.

Конкретно в твоем случае попробуй сделать примерно так:

if (Input::get('search.value')) {
    $query
        ->leftJoin('shareholders', 'shareholders.id', '=', 'users.shareholder_id')
        ->selectRaw('users.*, shareholders.id AS shareholder_id')
    ;
}
Atmden commented 5 years ago

Я решал подобную проблему при сортировке: f90978d

Можешь посмотреть, суть проблемы должна быть ясна. Поиском по всей таблице я не пользуюсь, но вероятно там что-то из этой же серии.

Конкретно в твоем случае попробуй сделать примерно так:

if (Input::get('search.value')) {
    $query
        ->leftJoin('shareholders', 'shareholders.id', '=', 'users.shareholder_id')
        ->selectRaw('users.*, shareholders.id AS shareholder_id')
    ;
}

Спасибо! Так и сделал))) Работает.