diff --git a/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php b/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php index 435c4947f769..e09580db48df 100644 --- a/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php +++ b/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php @@ -14,7 +14,7 @@ trait GuardsAttributes /** * The attributes that aren't mass assignable. * - * @var array|bool + * @var array */ protected $guarded = ['*']; @@ -28,7 +28,7 @@ trait GuardsAttributes /** * The actual columns that exist on the database and can be guarded. * - * @var array + * @var array> */ protected static $guardableColumns = []; @@ -75,7 +75,7 @@ public function mergeFillable(array $fillable) */ public function getGuarded() { - return $this->guarded === false + return self::$unguarded === true ? [] : $this->guarded; } diff --git a/tests/Database/DatabaseEloquentModelTest.php b/tests/Database/DatabaseEloquentModelTest.php index a085d3ea31e4..c2c440211b5a 100755 --- a/tests/Database/DatabaseEloquentModelTest.php +++ b/tests/Database/DatabaseEloquentModelTest.php @@ -10,7 +10,6 @@ use Illuminate\Contracts\Database\Eloquent\Castable; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use Illuminate\Contracts\Database\Eloquent\CastsInboundAttributes; -use Illuminate\Contracts\Encryption\Encrypter; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Database\Connection; use Illuminate\Database\ConnectionResolverInterface; @@ -47,7 +46,6 @@ use Illuminate\Database\Query\Processors\Processor; use Illuminate\Support\Carbon; use Illuminate\Support\Collection as BaseCollection; -use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Fluent; use Illuminate\Support\HtmlString; use Illuminate\Support\InteractsWithTime; @@ -1704,6 +1702,27 @@ public function testGuarded() Model::preventSilentlyDiscardingAttributes(false); } + public function testGuardedWithFillableConfig(): void + { + $model = new EloquentModelStub; + $model::unguard(); + + EloquentModelStub::setConnectionResolver($resolver = m::mock(Resolver::class)); + $resolver->shouldReceive('connection')->andReturn($connection = m::mock(stdClass::class)); + $connection->shouldReceive('getSchemaBuilder->getColumnListing')->andReturn(['name', 'age', 'foo']); + + $model->guard([]); + $model->fillable(['name']); + $model->fill(['name' => 'Leto Atreides', 'age' => 51]); + + self::assertSame( + ['name' => 'Leto Atreides', 'age' => 51], + $model->getAttributes(), + ); + + $model::reguard(); + } + public function testUsesOverriddenHandlerWhenDiscardingAttributes() { EloquentModelStub::setConnectionResolver($resolver = m::mock(Resolver::class));