Skip to content

Commit 146a204

Browse files
committed
Collect other eloquent model events
1 parent 2d6079d commit 146a204

File tree

4 files changed

+61
-13
lines changed

4 files changed

+61
-13
lines changed

src/LaravelDebugbar.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -470,11 +470,15 @@ function (\Illuminate\Database\Events\ConnectionEstablished $event) {
470470
if ($this->shouldCollect('models', true) && $events) {
471471
try {
472472
$this->addCollector(new ObjectCountCollector('models'));
473-
$events->listen('eloquent.retrieved:*', function ($event, $models) {
474-
foreach (array_filter($models) as $model) {
475-
$this['models']->countClass($model);
476-
}
477-
});
473+
$eventList = ['retrieved', 'created', 'updated', 'deleted', 'restored'];
474+
$this['models']->setKeyMap(array_combine($eventList, array_map('ucfirst', $eventList)));
475+
foreach ($eventList as $event) {
476+
$events->listen("eloquent.{$event}: *", function ($event, $models) {
477+
$event = explode(': ', $event);
478+
$count = count(array_filter($models));
479+
$this['models']->countClass($event[1], $count, explode('.', $event[0])[1]);
480+
});
481+
}
478482
} catch (Exception $e) {
479483
$this->addCollectorException('Cannot add Models Collector', $e);
480484
}

src/Resources/laravel-debugbar.css

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ div.phpdebugbar .phpdebugbar-header select {
227227
}
228228

229229
dl.phpdebugbar-widgets-kvlist dt,
230-
dl.phpdebugbar-widgets-kvlist dd {
230+
dl.phpdebugbar-widgets-kvlist dd,
231+
table.phpdebugbar-widgets-tablevar td {
231232
min-height: 20px;
232233
line-height: 20px;
233234
padding: 4px 5px 5px;
@@ -239,7 +240,8 @@ dl.phpdebugbar-widgets-kvlist dd.phpdebugbar-widgets-value.phpdebugbar-widgets-p
239240
background: transparent;
240241
}
241242

242-
dl.phpdebugbar-widgets-kvlist dt {
243+
dl.phpdebugbar-widgets-kvlist dt,
244+
table.phpdebugbar-widgets-tablevar td:first-child {
243245
width: calc(25% - 10px);
244246
}
245247

@@ -459,7 +461,8 @@ div.phpdebugbar-widgets-sqlqueries table.phpdebugbar-widgets-params td.phpdebugb
459461
margin-left: 3px;
460462
}
461463

462-
ul.phpdebugbar-widgets-list li.phpdebugbar-widgets-list-item:nth-child(even) {
464+
ul.phpdebugbar-widgets-list li.phpdebugbar-widgets-list-item:nth-child(even),
465+
table.phpdebugbar-widgets-tablevar tr:nth-child(even) {
463466
background-color: var(--debugbar-background-alt);
464467
}
465468

@@ -476,6 +479,10 @@ div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugb
476479
float: left;
477480
}
478481

482+
table.phpdebugbar-widgets-tablevar td {
483+
border: 0;
484+
}
485+
479486
div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-info {
480487
color: #1299DA;
481488
}

src/Support/Clockwork/Converter.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,16 @@ public function convert($data)
117117
$output['modelsCreated'] = [];
118118
$output['modelsUpdated'] = [];
119119
$output['modelsDeleted'] = [];
120-
$output['modelsRetrieved'] = $data['models']['data'];
120+
$output['modelsRetrieved'] = [];
121+
122+
foreach ($data['models']['data'] as $model => $value) {
123+
foreach ($value as $event => $count) {
124+
$eventKey = 'models' . ucfirst($event);
125+
if (isset($output[$eventKey])) {
126+
$output[$eventKey][$model] = $count;
127+
}
128+
}
129+
}
121130
}
122131

123132
if (isset($data['views']['templates'])) {

tests/DataCollector/ModelsCollectorTest.php

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ class ModelsCollectorTest extends TestCase
1414

1515
public function testItCollectsRetrievedModels()
1616
{
17+
$eventList = ['retrieved', 'created', 'updated', 'deleted', 'restored'];
18+
$keyMap = array_combine($eventList, array_map('ucfirst', $eventList));
19+
$data = [];
20+
1721
$this->loadLaravelMigrations();
1822

1923
debugbar()->boot();
@@ -22,6 +26,11 @@ public function testItCollectsRetrievedModels()
2226
$collector = debugbar()->getCollector('models');
2327
$collector->setXdebugLinkTemplate('');
2428

29+
$this->assertEquals(
30+
['data' => $data, 'count' => 0, 'key_map' => $keyMap, 'is_counter' => true],
31+
$collector->collect()
32+
);
33+
2534
User::create([
2635
'name' => 'John Doe',
2736
'email' => 'john@example.com',
@@ -34,22 +43,41 @@ public function testItCollectsRetrievedModels()
3443
'password' => Hash::make('password'),
3544
]);
3645

46+
$data[User::class] = ['created' => 2];
3747
$this->assertEquals(
38-
['data' => [], 'count' => 0, 'is_counter' => true],
48+
['data' => $data, 'key_map' => $keyMap, 'count' => 2, 'is_counter' => true],
3949
$collector->collect()
4050
);
4151

42-
User::first();
52+
$user = User::first();
4353

54+
$data[User::class]['retrieved'] = 1;
4455
$this->assertEquals(
45-
['data' => [User::class => 1], 'count' => 1, 'is_counter' => true],
56+
['data' => $data, 'key_map' => $keyMap, 'count' => 3, 'is_counter' => true],
57+
$collector->collect()
58+
);
59+
60+
$user->update(['name' => 'Jane Doe']);
61+
62+
$data[User::class]['updated'] = 1;
63+
$this->assertEquals(
64+
['data' => $data, 'key_map' => $keyMap, 'count' => 4, 'is_counter' => true],
4665
$collector->collect()
4766
);
4867

4968
Person::all();
5069

70+
$data[Person::class] = ['retrieved' => 2];
71+
$this->assertEquals(
72+
['data' => $data, 'key_map' => $keyMap, 'count' => 6, 'is_counter' => true],
73+
$collector->collect()
74+
);
75+
76+
$user->delete();
77+
78+
$data[User::class]['deleted'] = 1;
5179
$this->assertEquals(
52-
['data' => [User::class => 1, Person::class => 2], 'count' => 3, 'is_counter' => true],
80+
['data' => $data, 'key_map' => $keyMap, 'count' => 7, 'is_counter' => true],
5381
$collector->collect()
5482
);
5583
}

0 commit comments

Comments
 (0)