Allow use @apiResource without @apiResourceModel

This commit is contained in:
ccec1t91077
2023-05-09 12:26:01 +08:00
parent 0efa2731d9
commit c8584096c0
2 changed files with 7 additions and 2 deletions

View File

@@ -17,13 +17,17 @@ trait InstantiatesExampleModels
* @param string[] $relations
* @param \ReflectionFunctionAbstract|null $transformationMethod A method which has the model as its first parameter. Useful if the `$type` is empty.
*
* @return \Illuminate\Database\Eloquent\Model|object
* @return \Illuminate\Database\Eloquent\Model|object|null
*/
protected function instantiateExampleModel(
?string $type = null, array $factoryStates = [],
array $relations = [], ?ReflectionFunctionAbstract $transformationMethod = null
)
{
// Early return if JsonResource working with empty resource, there won't have an example model
if($type == null && $transformationMethod == null)
return null;
if ($type == null) {
$parameter = Arr::first($transformationMethod->getParameters());
if ($parameter->hasType() && !$parameter->getType()->isBuiltin() && class_exists($parameter->getType()->getName())) {

View File

@@ -11,6 +11,7 @@ use Knuckles\Scribe\Extracting\RouteDocBlocker;
use Knuckles\Scribe\Extracting\Shared\ApiResourceResponseTools;
use Knuckles\Scribe\Extracting\Strategies\Strategy;
use Knuckles\Scribe\Tools\AnnotationParser as a;
use Knuckles\Scribe\Tools\ConsoleOutputUtils as c;
use Knuckles\Scribe\Tools\Utils;
use Mpociot\Reflection\DocBlock\Tag;
@@ -101,7 +102,7 @@ class UseApiResourceTags extends Strategy
}
if (empty($modelClass)) {
throw new Exception("Couldn't detect an Eloquent API resource model from your docblock. Did you remember to specify a model using @apiResourceModel?");
c::warn("Couldn't detect an Eloquent API resource model from your docblock. Did you remember to specify a model using @apiResourceModel?");
}
return [$modelClass, $states, $relations, $pagination];