Skip to content

Instantly share code, notes, and snippets.

@finagin
Last active December 30, 2020 21:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save finagin/688337db165788afc5ebcc071b4f7e5d to your computer and use it in GitHub Desktop.
Save finagin/688337db165788afc5ebcc071b4f7e5d to your computer and use it in GitHub Desktop.
<?php
namespace App\Services;
use App\Contracts\Helper;
use Illuminate\Contracts\Container\BindingResolutionException;
use Laravel\Nova\Nova;
class HelperService implements Helper
{
public function guessNovaRelationPosition(string $orderField): int
{
$lastPosition = 0;
try {
$request = app('request');
if ($request->filled(['viaResource', 'viaResourceId', 'viaRelationship'])) {
$resource = Nova::resourceForKey(
$request->input('viaResource')
);
$relationship = $request->input('viaRelationship');
$model = $resource::$model::with($relationship)
->find($request->input('viaResourceId'));
$lastPositionalModel = $model->{$relationship}
->sortByDesc($orderField)
->first();
$lastPosition = optional($lastPositionalModel)->{$orderField} ?? 0;
}
} catch (BindingResolutionException $exception) {
}
return $lastPosition + 1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment