Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/Illuminate/Database/Eloquent/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
use Illuminate\Support\Collection as BaseCollection;
use Illuminate\Support\Str;
use Illuminate\Support\Stringable as SupportStringable;
use Illuminate\Support\Traits\Dumpable;
use Illuminate\Support\Traits\ForwardsCalls;
use JsonException;
use JsonSerializable;
Expand All @@ -54,6 +55,10 @@ abstract class Model implements Arrayable, ArrayAccess, CanBeEscapedWhenCastToSt
ForwardsCalls;
/** @use HasCollection<\Illuminate\Database\Eloquent\Collection<array-key, static & self>> */
use HasCollection;
use Dumpable {
dump as protected;
dd as protected;
}

/**
* The connection name for the model.
Expand Down Expand Up @@ -2791,7 +2796,7 @@ public function __unset($key)
*/
public function __call($method, $parameters)
{
if (in_array($method, ['increment', 'decrement', 'incrementQuietly', 'decrementQuietly', 'incrementEach', 'decrementEach'])) {
if (in_array($method, ['increment', 'decrement', 'incrementQuietly', 'decrementQuietly', 'incrementEach', 'decrementEach', 'dd', 'dump'])) {
return $this->$method(...$parameters);
}

Expand All @@ -2816,7 +2821,7 @@ public function __call($method, $parameters)
*/
public static function __callStatic($method, $parameters)
{
if (static::isScopeMethodWithAttribute($method)) {
if (in_array($method, ['dd', 'dump']) || static::isScopeMethodWithAttribute($method)) {
return static::query()->$method(...$parameters);
}

Expand Down
49 changes: 49 additions & 0 deletions tests/Database/DatabaseEloquentModelTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
use ReflectionClass;
use stdClass;
use Stringable as NativeStringable;
use Symfony\Component\VarDumper\VarDumper;

include_once 'Enums.php';

Expand Down Expand Up @@ -750,6 +751,36 @@ public function testDestroyMethodCallsQueryBuilderCorrectlyWithEmptyIds()
$this->assertSame(0, $count);
}

public function testDumpMethodDumpsModelInstanceAndReturnsIt()
{
$log = new BaseCollection;

VarDumper::setHandler(function ($value) use ($log) {
$log->add($value);
});

try {
$model = new EloquentModelStub;

$result = $model->dump('one', 'two');

$this->assertSame($model, $result);
$this->assertSame([$model, 'one', 'two'], $log->all());
} finally {
VarDumper::setHandler(null);
}
}

public function testDumpMethodCallsQueryBuilderCorrectly()
{
EloquentModelDumpStub::$arguments = [];

$result = EloquentModelDumpStub::dump('one', 'two');

$this->assertSame('foo', $result);
$this->assertSame(['one', 'two'], EloquentModelDumpStub::$arguments);
}

public function testWithMethodCallsQueryBuilderCorrectly()
{
$result = EloquentModelWithStub::with('foo', 'bar');
Expand Down Expand Up @@ -4136,6 +4167,24 @@ public function newQuery()
}
}

class EloquentModelDumpStub extends Model
{
public static $arguments = [];

public function newQuery()
{
return new class
{
public function dump(...$arguments)
{
EloquentModelDumpStub::$arguments = $arguments;

return 'foo';
}
};
}
}

class EloquentModelWithWhereHasStub extends Model
{
public function foo()
Expand Down
Loading