Get Searchable Columns for every Nova Resources

3 years ago

crynobone

Code

$user = App\Models\User::find(1);

app('auth')->guard(null)->setUser($user);
app('auth')->shouldUse(null);

app()->register(Laravel\Nova\NovaServiceProvider::class);

Laravel\Nova\Events\NovaServiceProviderRegistered::dispatch();

$request = Laravel\Nova\Http\Requests\NovaRequest::create('GET', '/', []);

Laravel\Nova\Events\ServingNova::dispatch($request);

collect(Nova::availableResources($request))
  ->mapWithKeys(function ($resource) {
	return [$resource => $resource::searchableColumns()];  
  });

Output

=> Illuminate\Support\Collection {#2070
     all: [
       "Laravel\Nova\Actions\ActionResource" => [
         "id",
       ],
       "App\Nova\Address" => [
         "id",
       ],
       "App\Nova\Captain" => [
         "id",
       ],
       "App\Nova\Invoice" => [
         "id",
       ],
       "App\Nova\Comment" => [
         "id",
       ],
       "App\Nova\Company" => [
         "id",
       ],
       "App\Nova\Dock" => [
         "id",
         "name",
       ],
       "App\Nova\Employee" => [
         "id",
       ],
       "App\Nova\Flight" => [
         "id",
       ],
       "App\Nova\InvoiceItem" => [
         "id",
       ],
       "App\Nova\Link" => [
         "id",
       ],
       "App\Nova\People" => [
         "id",
       ],
       "App\Nova\Role" => [
         "id",
         "name",
       ],
       "App\Nova\Sail" => [
         "id",
       ],
       "App\Nova\Ship" => [
         "id",
         "name",
       ],
       "App\Nova\Tag" => [
         "id",
       ],
       "App\Nova\Post" => [
         "id",
       ],
       "App\Nova\Video" => [
         "id",
       ],
       "App\Nova\User" => [
         "id",
         "name",
       ],
     ],
   }
New course: Desktop apps with Electron