Explorar o código

Merge pull request #417 from 090809/fix-415-wrong-belongs-to-relation-creating

Correct BelongsTo relation creation
Shalvah %!s(int64=3) %!d(string=hai) anos
pai
achega
d97ce29074

+ 3 - 0
src/Extracting/Strategies/Responses/UseApiResourceTags.php

@@ -205,6 +205,9 @@ class UseApiResourceTags extends Strategy
             try {
                 return $factory->create();
             } catch (Throwable $e) {
+                c::warn("Eloquent model factory failed to create {$type}; trying to make it.");
+                e::dumpExceptionIfVerbose($e, true);
+
                 // If there was no working database, ->create() would fail. Try ->make() instead
                 return $factory->make();
             }

+ 3 - 0
src/Tools/Utils.php

@@ -6,6 +6,7 @@ use Closure;
 use DirectoryIterator;
 use Exception;
 use FastRoute\RouteParser\Std;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 use Illuminate\Routing\Route;
 use Illuminate\Support\Str;
@@ -251,6 +252,8 @@ class Utils
                         : [];
 
                     $factory = $factory->hasAttached($factoryChain, $pivot, $relationVector);
+                } else if ($relationType === BelongsTo::class) {
+                    $factory = $factory->for($factoryChain, $relationVector);
                 } else {
                     $factory = $factory->has($factoryChain, $relationVector);
                 }

+ 5 - 0
tests/Strategies/Responses/UseApiResourceTagsTest.php

@@ -641,4 +641,9 @@ class UseApiResourceTagsTest extends BaseLaravelTest
             ],
         ], $results);
     }
+
+    protected function afterTestCleanup()
+    {
+        config(['scribe.database_connections_to_transact' => []]);
+    }
 }