Конструктор запросов Laravel Spatie

В индексе моего пользовательского контроллера у меня есть следующее:

return QueryBuilder::for(User::class)
    ->with('phoneNumbers')
    ->allowedIncludes('trashed')
    ->get();

Я надеялся передать такой параметр include:

http://127.0.0.1:8000/v1/users?include=trashed

Чтобы добавить к запросу глобальную область withTrashed().

Это возможно? Скорее всего, я упускаю что-то очевидное, я пробовал несколько вариантов в своем тестировании, обычно заканчивая ошибкой, например:

"message": "Call to a member function addEagerConstraints() on boolean",
    "exception": "Symfony\\Component\\Debug\\Exception\\FatalThrowableError",
    "file": "/Users/timwickstrom/Sites/Wavefire/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php",
    "line": 522,

Для справки: https://github.com/spatie/laravel-query-builder. введите здесь описание ссылки


person Tim Wickstrom    schedule 19.06.2018    source источник
comment
проверьте, существует ли phoneNumbers или возвращает отношение для класса User   -  person Wreigh    schedule 19.06.2018
comment
Разве вы не можете просто использовать withTrashed()? Я думаю, что проблема в том, что когда вы используете его в allowedIncludes, это трактуется как отношение.   -  person Wreigh    schedule 19.06.2018


Ответы (1)


После проверки этой библиотеки, вот что у меня есть.

return QueryBuilder::for(User::class)
    ->with('phoneNumbers') // <-- I think you can use `allowedIncludes` here.
    ->allowedFilters([ // <-- I believe that `withTrashed` is a scope query,
                       // so you can use this. You cannot use `allowedIncludes`
                       // because it works with relations.
        Filter::scope('withTrashed')
    ])
    ->get();
person Wreigh    schedule 19.06.2018
comment
Спасибо за публикацию. Прочитав это и перечитав документы, я все еще не могу заставить его включить глобальный withTrashed. Я пробовал передать его? filter ['trashed'],? filter ['withTrashed'],? filter ['with_trashed']. Никогда не добавлял. Но это вдохновило меня на то, как ее решить. Так что спасибо тебе. - person Tim Wickstrom; 20.06.2018
comment
На самом деле это работает! Спасибо. В моем тестировании значения фильтра был пропущен один элемент. withTrashed не исключает параметров, но вам все равно нужно передать true следующим образом: 127.0.0.1. 0.1: 8000 / v1 / users? Filter [withTrashed] = true - person Tim Wickstrom; 20.06.2018
comment
хорошо что заработало! Извините, я понятия не имею об URL-адресе, он включен в библиотеку? - person Wreigh; 20.06.2018
comment
Нет, это маршрут, который я определил и с которым тестировал. Эта часть? Filter [withTrashed] = true - это то, как вы взаимодействуете с QueryBuilder. Я просто передавал? Filter [withTrashed], который не запускал построитель запросов. Когда я добавил = true или = 1, он включил бы область видимости. - person Tim Wickstrom; 20.06.2018