Boost, Inertia Forms, and multiple personas
Download MP3This is the Laravel News Podcast, your
one-stop podcast to find out about
Laravel-related news, tutorials, packages,
and more. Here are your hosts, Jake
Bennett and Michael Dyrynda.
Hello, all you wonderful, lovely people
out there in Laravel land. This is episode
242 of the Laravel News Podcast. It is
August 18th, 2025. And Michael, my friend,
I was just caught in a downpour.
-We were-
-Downpour, yeah
... just getting ready to get started, and
I was late to come to the chat. And you
were like, "Where are you?" Like, d- you
were literally just-
-You were just here
-... here a minute ago.
And then I came on, and like, you know, if
you would have seen me two minutes
before, I was absolutely soaking wet.
There was... We have our outdoor furniture
that I try and cover up. It's got
cushions on it, right? So if it's gonna be
raining, I try and cover it up. And I
realized, like, like 30 seconds into it
starting to rain, and not just a little
rain, like, a lot of rain-
-A lot.
-I'm like, "Oh, no, the furniture isn't
covered." So I ran out there. Oh, my word.
Got absolutely soaked. And so, yeah, had
-a good change real quick. So...
-The furniture's fine. Yeah. We, we had...
We've got, like, outdoor furniture and we
had a cover for it, but the sun here-
-Yeah. Yeah
-... is awful. So the cover just got-
-Yeah
-... like, it just-
-Destroyed.
-What's the word? It got... It destroyed.
-It was like...
-Baked. Like, sunbaked?
Yeah. Baked. Yeah. It just, like, became
so brittle that, like, you-
-Yeah. Yeah. Yeah
-... you'd touch it and it would poke a
hole in it. So... And it's like one of
those things that I don't know where to f-
to find, like, a cover that fits, 'cause
it's like an L-shaped piece of furn-... I
-suppose we could, like-
-Mm-hmm
-... stack it so it becomes a square-
-Yeah. Yeah
-... that's a whole...
-Amazon, Amazon has these really one-
really good ones. Like, that's actually...
'Cause my, my covers last year, they,
-they lasted one year and they were-
-Yeah
-... garbage.
-They disintegrate-
-And so these ones-
-... is what I was looking for.
-Yeah. They disintegrate. Exactly. Yeah.
-Mm-hmm.
And so these ones are actually pretty
decent. I've gotten the same brand of
Amazon covers on all my... Like, my wood
cover, my grill cover, my... All of them.
-They're all, they're all good. So...
-Nice. I have to check them out.
-I'll send you the link, folks. Uh-
-Yeah.
You know. A referral link, affiliate
links, uh, incoming-
-It's fine.
-... in the show notes, folks. Gotta make
that money.
Well, hey, everybody. Uh, we were... Two
weeks ago, I guess a couple more... Three
weeks ago, right, we were at LyraCon,
which was amazing. So fun. Had a great
time. And we were able to record some
recaps while we were there. So the last
episode was just sort of a cut of those
recaps that we were able to do while we
were there at the conference. Michael and
I together reunited for the first time in,
like, six years, able to record those
podcasts together, which was super fun.
But we are back remote again today. So
we're gonna be covering, as always,
releases, news, packages, and more.
Michael, thank you for putting the show
notes together while I was out in the
rain. I'm gonna let you take this first
-one, Laravel Boost. Talk to us about it.
-No worries. Yeah. Laravel Boost was,
I guess, like, a little bit of a surprise
out of left field-
-Yeah. It was
-... to be honest, when, when it came down
to it. Um, Ashley Hindle, who had only
been at Laravel for
four weeks, I think he said, when I spoke
to him at the time... So, like, this is
what he did in, quote unquote, four weeks.
I know that he's credited Peter Soon to
some, um, some of the MCP stuff that he
was working on. Peter, Peter being, uh,
one of the Tailwind Labs team, 'cause they
were both working on an MCP server for
Laravel. So Laravel Boost is a AI coding
starter kit that is designed to make
working with AI agents better. Uh, it does
this by feeding them Laravel-specific
data to help them write higher quality
code. And Ashley Hindle described it as a,
um, as Boost helps guide the AI to do
better. So this was announced, as I
mentioned, at Laricon, Laricon US, and it
includes three main features. The first is
that it provides a Laravel-specific MCP
server with, at the time of this
recording, 15 tools to help you in your
day-to-day work, which helps your AI
agents to query the database, run code
through Tinker, and search through
up-to-date documentation.
It is version-specific documentation, so
all the Laravel ecosystem docs have been
ingested and vectorized and should have
fewer hallucinations, and this includes
things like Inertia, Livewire, Flux,
Filament and so on. So you get the most
relevant information, and it does this by
parsing your composer.json and identifying
not only what packages you're running,
but what versions they are and kind of
constraining the guidelines
to those versions. And the guidelines
themselves are maintained by Laravel, and
it can create rules for Cursor, for Junee,
for GitHub Copilot. Um, it'll create your
clawd.md files. And the team has manually
create- uh, curated those guidelines,
including version-specific ones for
Laravel. For example, there are guidelines
for Inertia 1 or 2 to help the AI agent
behave appropriately in your projects. You
can check out the GitHub repo for Boost.
We will have links to that in the show
notes. Uh, our very own Eric Barnes sat
down and spoke with Ashley Hindle to talk
about, uh, what Boost is and, uh, how it
all came together behind the scenes.
Harris Raftopoulos has put together a
video on getting up and running. I know
that Nuno's done some videos on it. I know
that Ashley's put out a video. I know
Ashley sat down with Matt Stauffer for the
Laravel podcast.
-Yep. Yep.
-There is a lot of content out there at the
moment. Um, I, I had... I have jumped on
the bandwagon. I know that... Tho- those
of you who've been listening for a while
know that I'm a bit of an AI nuffy, but-
... Aaron Francis, credit to him, has
finally shown me exactly how and why I
would want to use it and in what ways that
it is most powerful. So thank you to
Aaron. If you haven't seen his video,
we'll have links to that. Um,
and I mentioned that Harris has put
together a video. Um, we have some more
context about that as well, but he
basically talks through supercharging your
Laravel projects and getting a real AI
coding, uh, boost. So, uh, in, in the
video he talks about installing Boost and
setting it up.Um, configuring the MPC- uh,
sorry, MCP server to enable
Laravel-specific AI tools, integrated
version-specific documentation using the
AI system to generate and test a Livewire
image upload component. It'll run and
debug your automated tests. It'll handle
migrations and validation. It shows, uh,
he shows how you can use Tinker and other
tools directly through the AI- AI agent.
So you can specifically ask it to query
your database and say, "How many users are
in my application?"
Um, he also showed how Boost provides
smarter context to our code suggestions,
uh, adding and managing fake images in the
app using AI-powered commands,
highlighting the open source nature of
Laravel Boost, uh, which it- w- we
include. Uh, there'll be a large community
feedback portion as well, so I expect
these, these tools, these guidelines, um,
and all of this stuff to get better over
time as the community provides, uh, more
documentation, provides more...
-Yeah
-... uh, specific guidelines. I think
Ashley
said when he was on the Laravel news pod-
uh, on the Laravel podcast with Matt
Stouffer that, you know, the expectation
is that the community will help to shape
things, and it's not about dictating
the one way, it's about coming together as
a community in figuring out how to do it.
So shout out to everyone putting together
all that content. So much of it, it
almost feels like Larav- uh, Laravel is a
big boy company, and they've... All of
this stuff was coordinated. It all came
out
straight after the, the project was
released. So shout out to everyone that
has been involved in that process.
Absolutely. Yeah, really, really good job.
And like you said, it was out of left
field, but it was so well-coordinated and
everything, kind of all at the same time.
It was, it was really nice to know that,
like, leaving that conference, it wasn't
like, "And will be released in six
months." It was like-
-Right
-... in two weeks. You know what I mean?
-Yeah, straight away, basically.
-So they got it all out there and, uh,
functioning well. Really excited to, to
dig into some of that. And we've already
got, um, got it installed in two of our
applications, two of our big ones, and so
the developers and the team are already
using that and loving it. So pretty cool
stuff. Thank you to the team for that one.
Well, uh, Inertia releases a new form
component as well. Paul Redmond wrote this
one up. So the Laravel team released a
new form component for Inertia. So what
this does is it provides a component that
behaves like a classic HTML form, but
under the hood it's using Inertia so that
you can avoid full-page reloads. So
there's an example in the documentation
that illustrates really how simple it is
and how, uh, it can make handling and
submitting that form data in Inertia quite
easy. So you just import it from the
InertiaJS React or Vue, whatever you might
be using there.
Simple component, you define the action,
you define the method, and then inside of
that, there's a slot where you can then
put your inputs, your text areas, whatever
you have there.
Um, it also has advanced features to make
writing forms with Inertia a breeze, such
as slot props, form props, events, and
more. The main features, however, include,
uh, what we talked about, which is
Inertia power submission that happens via
XHR in the back, in the background. Um,
those slot props which then expose the
state and helper methods so that it will
handle state and errors and utility
functions for you. So you don't have to
write that yourself. You don't have to
figure that out yourself. It's already
figured out for you and documented for
you. Uh, the form component also provides
props that are available inside of
Inertia's visit options. So those are
available to you. It also provides events
to handle actions like submit and cancel,
success and error. Um, it also... And this
is something that's a little bit tricky
if you had to roll it yourself, but it-
it- it allows for dot notation. So if you
have a username, user address, user age,
whatever, user.name is what you can use
there so that when it gets submits to the
backend, you get it in that... Uh, you can
receive it in that dot notation. And, you
know, it's in an array format there. And
then lastly, you can get programmatic ac-
programatic access to those four methods
via a ref. So in the case that you need to
trigger actions that live outside of the
form, so not just inside the form but you
need to do something from outside the
form, you can, you get programatic access
to the form and to those different pieces
of it using that ref, uh, which is really,
really handy. So it's available for Vue,
React and Svelte and, uh, is available
starting in Inertia version 2.1. So you
can see implementation inside of pull
request 2474. Big shout-out to Pascal
Baljet
and all of those folks involved in
bringing the form component to Inertia.
Thanks so much for Paul for writing that
one up. You can find the official forms
documentation page right now, uh, along
with the useForm form helpers that are
already provided by Inertia. So check that
one out.
Uh, Filament version 4 is now stable. As
of August 12th, 2025, version 4
is officially stable. And in large part,
that is thanks to their incredible
community and all the help with testing,
bug fixing and overall recommendations.
They do not take any of this for granted.
All of the work and time that has been put
in, um, has helped them get where they
are today. So what to expect? We've spoken
about this a few times over the last
couple of months since they released their
open beta. Uh, performance enhancements,
adjustments to, uh, schemas. So if you've
ever wanted to easily combine Filament
form fields, uh, info list entries and so
on and so forth, it was a bit of a pain
previously but now you can configure a
schema and re-use those about the place.
There is support for custom data tables,
actions everywhere, um, and there's more
still to come. So these are just a small
handful of the incredible updates that
have been packed into the version 4
release. They are probably a bit biased in
saying it, but they think this is easily
one of the greatest Filament releases to
date. Um, having not used it myself, I, I
have had a chance to look into it and be
around it a little bit, and I can see that
they have certainly put in a lot of work,
um, and performance has been front of
mind in a lot of what they've done. So
give version 4 a whirl and let us, or let
the Filament team know what you think.
They would love to hear from you in their
Discord server, especially if you're
building something that you are proud of
using Filament. Thanks to Alex6 who I had
the pleasure of meeting for the first time
in, uh, Denver a few weeks ago. So, uh,
shout out to him and the team.
Absolutely. Really good stuff here. Custom
data tables. Come on. I mean, that's
-amazing, right? Super excited about that.
-Yeah.
The schema thing is also really
interesting. I'm interested to dig into
that a bit. Previously, if you wanted to
carry some of these pieces across from,
from, uh, component to component, you had
to define them multiple times and it was
-sort of difficult to, to-
-Mm-hmm
... make sure you had them the same in all
the places. So I think that's sort of the
challenge that it's trying to attack head
on there, which is really, uh,
refreshing. That's, that's a great idea,
and, uh, excited to dig into this one.
Gonna be interesting to see what the
upgrade path looks like from V3 to V4 as
well. Hopefully, not too terrible. Um,
looking to... Yeah. We, we've got a couple
-things we're using Filament in, so yeah.
-Nice.
Hopefully, hopefully, upgrade path is good
and we can use it soon here.
-Yeah.
-Okay. Let's talk about some packages,
shall we?
Sending notifications in Laravel,
something we are all probably familiar
with, but in this case, with Firebase
Cloud, uh, Messaging and Notifier. So
Firebase Cloud Messaging, so this is FCM
for short, it's a cross-platform messaging
solution that enables you to send
messages really reliably. So if you need
to use FCM with Laravel, there is now a,
uh, package, Notifier,
N-O-T-I-F-I-R-E, which is kind of a play
on words for Firebase there, uh, for
sending those FCM notifications with
support for Laravel's notification system.
So again, as I said, notifications, this
is something that's been around, uh, in
Laravel for a long time, but, you know,
there's always new drivers that are coming
out for these things. So if you would
like to be able to integrate Laravel's
notification system with FCM, now you can
do that quite easily. There's support for
both simple and complex FCM messages. It's
a fluent interface, of course, because
why not? That's what Laravel loves. Uh,
it's automatic logging of notification
delivery status, which is actually very
nice. Database migrations for storing FCM
tokens, and then configurable default
settings. Really easy to get set up, all
given as example code inside of the post
here. Thanks to Yannick for writing that
one up.
Incredible. Uh, next up, record and replay
requests with Laravel Chronotrace. The
Chronotrace package enables you to record
and replay Laravel requests
deterministically and generate tests from
production traces. The package can help
you trace external HTTP requests made
during execution, including requests and
response details, status codes, connection
issues, and more. It will also track
database queries, cache events, queue
jobs, and custom events. And once a trace
is captured, you can replay it to show all
the information that is gathered, which
is configurable during the trace. So it'll
give you a trace ID, a timestamp, the
environment that it was run in, the
request URL, the response status, how long
it took, how much memory was used, and it
will list all of the captured events,
database, cache events, HTTP events, and
provide you a summary at the end.
Another interesting feature is generating
a test from a specific trace that you have
recorded. The recording frequency can be
configured as always and sample rate error
only, uh, configuration options
available. And once you have a trace you
want to convert into a test, you can run
the replay command with the
--generate-test flag.
So the main features of this package,
there is smart recording. It'll provide
multiple recording modes, so you can
always record, you can sample, you know,
take a certain percentage, you can record
only errors or on targeted routes. There
is comprehensive event capture, detailed
replay, flexible filtering, multiple
storage options, so you can store into
local disc or S3 or in custom storage
adapters. There is the ability to scrub
personally identifal- in- personally
identifiable information, so you can
automatically mask sensitive information
like passwords, tokens and emails. There
is async storage, which is queue-based, so
that you don't have to worry about
performance impacts, and automatic cleanup
based on retention policies and automatic
purging.
We'll have links to all of this, including
the great place to start being the basic
usage examples for real world ideas on how
to use the package. And it will
illustrate some common workflows, such as
development, bug investigation, and more.
Shout out to the folks behind,
uh, Chronotrace.
It seems really interesting, um, the idea
of having a smart recording where you're
recording, recording only the error,
-uh, responses and routes there. So-
-Mm
... uh, you know, if you were doing that
and, and because it has really flexible,
um, storage, uh, options, right? So you
could throw it into S3 or just put it in
-the local-
-Mm-hmm
... or whatever, you know, all the other
drivers that you have available for
Laravel storage. If you did say, "We're
only gonna capture those that are errors,"
and then you can generate tests from
those, that would be pretty awesome. Say
-like, "Okay."
-Pretty good. Yeah.
"Here's an error that occurred. We want to
make sure that we're handling this
appropriately. We're gonna generate a test
off of that." Um, I think if only used
for that even, it would be really
valuable. So that's pretty cool. Laravel
-Chronotrace.
-For sure.
Nice.
Okay. Let's talk about personas. So,
what would we define a persona as? So,
for me, in our specific context, we have
things like
managers and administrators and users, and
we have, um, when you have a manager, a
manager is typically specifically over a
group of people. So there's, you know,
people that report to them, whatever. So
if you need to be able to
test as those people, it can be kind of a
pain in the neck, right? You, you kinda
have to either have those people as
seeders in your local database, and then
you have to be able to imitate as those
people or-
-Mm-hmm
-... things like that. It, it can just be
challenging. Um,
and so what this package is attempting to
solve is the a- this ability to be able to
define personas
and then be able to switch between them
easily with this multi-persona package.
So,
it's a lightweight context layer system
for Laravel users, which allows a single
user to switch between different roles,
accounts, or tenants dynamically without
having to do imitation or create multiple
logins or sessions. So, um, it does this
by providing a persona model, so it's
stored in the database. So it's attached
to a single user and then provides a
persona service handler operation, like
getting the current persona, switching
between them, checking their permissions,
et cetera.So they, they reference this as
saying it could be helpful for
multi-tenant SaaS applications. So a user
could switch between different company
contexts, those role-based, uh, based
access controls. Um, and then it gives a
couple snippets as an example from the
README, uh, which will illustrate creating
personas for multiple company contexts.
So, um, you know, multi-tenant SaaS,
role-based access, agency management,
marketplace platforms, switching between,
like, buyer and seller context switching.
Uh, or as well as enterprise systems,
which would be what I'm talking about, a
department or project-based access, right?
Um, and so this is actually something
that's very relevant to us recently
because what we've done recently is pulled
all of the role items out into a
different service, and we only have left
in our applications permissions alone.
That's all we're checking. And so for us,
it's not that roles don't exist, they just
don't necessarily exist in our system.
But when we're testing as developers or
developing something for a particular
persona, we have to have some way to
imitate that. And it's nice to be able to
switch between those as well to say like,
"If I'm a manager, should I s- can I see
this? If I'm a user, can I see this?" And,
you know, you don't wanna have to
imitate, imitate. You can just kinda
switch between these personas really
easily. So this looks like a really great
package. Uh, Paul Rodman, thanks for writ-
writing that one up. And I believe it's
actually also the same folks that created
the last one we just talked about,
ChronoTrace. And so, um, I'm not exactly
sure. Grazulex is the name of the org in
GitHub that created both of those. Uh,
cool stuff. So thanks, Paul-
-Yes
-... for writing that up.
Amazing.
Next up, if you are using Postman for
either manually testing your API endpoints
or providing Postman collections for
people that are using your API or, um, you
know, investigating using your API, uh,
API, the Laravel Postman package helps you
to generate... Or not doesn't help you.
It does. It will do it for you. It will
generate Postman collections from your
Laravel routes with intelligent
organization and rich documentation
capabilities. The package offers
comprehensive configuration options for
generating the Postman collection with
conventions that get you started quickly.
To use the package, you create the Postman
collection with an artisan command,
postman:generate, and the package includes
configuration options for features such
as route filtering, API authentication
settings, file generation paths and
filenames, and more.
After generating an example Laravel
project, uh, with install api, so the, uh,
PHP artisan install api command and
configuring a few things such as an API
token, Paul, the author of this article,
was able to get things working in Postman
within minutes by importing using
Postman's import functionality. Main
features of the package include generating
Postman collections with a single
command, automatic request body generation
from form request validation rules,
multiple organization strategies either by
route prefix, controller, or using nested
paths. There is built-in authentication
support including bearer, basic auth, and
API keys, customizable route filtering,
and environment variable support for
sensitive data. So if you are using or
plan to use and support Postman for
interacting with your API, check out the
package. We have links to that for you in
the show notes.
Very nice. That's good stuff there.
Um, I would also be remiss if I did not
mention Scramble. So if you're looking to
generate documentation, API documentation,
Scramble and Scramble Pro are really,
really good. And then what those give you
in output, you could actually also
generate Postman collections from that as
well. I know there's a ton of tool chains
around this stuff. That's one that's
worked really well for us. Um, and so
just, you know, a little shout-out there
to the folks at Scramble. Really, really
good tool there. Okay. Speaking of AI,
building MCP servers in PHP. So MCP
standing for model context protocol.
Let's talk about what this is for a second
here. We've talked about MCPs a little
bit.
Um, what MCPs are here, and I'm gonna, I'm
gonna stumble over this and I'm gonna do
my very best.
It's a standardized open protocol that
allows LLM clients to understand what
tools and structured capabilities your
application provides. So you get
this documentation essentially that you
can hand to the LLM and you can say, "Hey,
LLM, you now have this new tool, and you
might want to use this new tool. Here's a
description of when you might want to use
this." And so it can look at its, um, you
know, its prompt and then say, "What is
the thing I'm trying to accomplish? Do I
have any tools available to me that look
like they might help me accomplish this
task?" And if your MCP looks like it can
handle one of those things, it will grab
that and then it can feed into that, the
different context pieces that you've said
are needed. So the different arguments
that are needed, and then you can say,
"Here's the structured output I'm gonna
provide." You can imagine that building
all that from scratch and learning that
could be rather challenging. And it could,
but really, all it's doing, uh, at a
high, high level is saying, "Here are
methods and maybe, like, API endpoints
that I have available, and I need to
describe them for the LLM." So how do we
do that? Right? That's what this does for
you, is the goal. So it's built with PHP
8.1+.
So there's PSR standards, modular design
principles. It follows established PHP
conventions. Um, it also has multiple
transport options. So you could imagine if
I have a long-running job that's... If,
if I have a long-running tool that's gonna
be out there, I have to make sure that
there's things like, uh, in- streamable
HTTP with resumability, right? There's
also server-sent events. So this allows
for multiple different transport options.
Uh, you can also use PHP attributes, which
are wonderful. Like, using an attribute
allows you co-locate additional
information right next to your methods.
And so really nice to be able to look at a
method and say this attribute, MCPTool or
MCPResource or MCPPrompt, those
attributes can be used for zero
configuration element registration. So you
annotate your methods and then the
library sort of handles the rest for you.
It will do intelligent schema definitions.
So JSON schema generation from your
method signatures, your docblocks, and
then those attributes that we were just
talking about. Um, it also allows for...So
session management, so this is another
thing. How does your LLM then get a
session for your tool? So it allows for
multiple storage backends in memory,
cache-based custom implan-
implementations, persistent sessions that
live across different reconnections. Um,
dependency injection, which we would
expect with Laravel, of course. And then
production ready features like error
handling or batch request process-
processing, event sourcing, resumable
connections, extensive logging
capabilities, all those things. So there's
a hands-on example in the, um, post here,
which is great. I'm not gonna go through
all of that, but it's, it's sort of...
This is a
package/mini tutorial, I would say. So if
you're looking to expose a service that
you've created to an LLM using some sort
of MCP server, I would definitely give
this one a look. It's a bit of a primer,
uh, that it explains a little bit how it
works altogether, and then also does the
work of generating those things for you
without having to, um, do it by hand. And
also you can generate it when you update
your stuff too, right? So if you make a
new change, you just generate the
documentation again and away you go. So
really cool tool there. Um,
good write-up on that one. Thank you,
Yannick.
The Laravel ShareLink package helps you
create, manage and secure temporary share
links for files, routes and models. The
package enables simple sharing with custom
expiration and maximum clicks and
provides an API for managing shares, such
as extending the time for an existing
share. There is a basic example from the
package's documentation. You can use a
fluent interface to do this. Sharelink
colon, colon, create, give it a path to
some file or some location, give it an
expiration, specify number of maximum
clicks, specify if you wanna use a
password and then generate. And that will
return to you a string, which is a link
to, you know, yourapp.com/sla- /share/
a random string.
The package has lots of advanced features
such as sharing a route, an eloquent model
or even specifying IP restrictions for
share links. The package also provides a
command line interface to generate links
if you want to create them from the
command line instead of via code.
Main features of the package include
multiple resource types, so you can share
files, routes and model previews
seamlessly. There is time limited access.
There is password protection, rate
limiting, IP filtering, signed URLs using
Laravel's signed route integration. There
is a burn after reading functionality, so
you have one-time access links that will
self-destruct. Comprehensive auditing to
track access patterns, IPs and timestamps,
advanced security for password throttling
and brute force protection. Flexible
delivery, uh, so there's support for
X-Nfile and X-XL redirect headers and
streaming. There is a management API,
command line commands, observability with
built-in logging and metrics integration,
and it is test friendly providing you with
a comprehensive test coverage easy
mocking. Uh, it's always good. It's, it's
easy, it's easy to do,
um,
temporary
links and URLs and things like that in
Laravel.
Um, but
the extra functionality that you might add
on top of it that this package offers
you, uh, to give you a bit more control is
something that now you don't have to
worry about implementing yourself.
Very cool. And I've, I've had to do this
before, too.
Which is, it's not that... It's, you know,
not that challenging until you try to do,
uh, a couple of the more advanced things.
And then, yes, it, it does become, um,
-more difficult, so cool package there.
-Yes.
Uh, got to read through on that one.
Laravel Dev Toolbox, so this is advertised
as your Swiss Army Knife Artisan CLI.
Well, that could mean a lot of different
things, right? Are we generating code
here? Are we... Like, what- what exactly
is the Swiss Army Knife here? So let me do
my very best to describe this. This was
created by Jean-Marc Stravin
and it helps teams. Here's, here's what it
does. It helps teams maintain code
quality and also gain deeper
understandings of their Laravel
applications through how? Automated
analysis, that's one.
Code review assistance, two.
Performance bottleneck detection and then
technical debt identification. Um, so
they- they're saying it's, it's really
kind of helpful for new developers, but
also establishing, uh, continuous
integration, continuous delivery, quality
gates, uh, and also monitoring application
structure and health. Let's talk about
some of the main features real quick. So
it can perform analysis of models, routes,
services and more. It can analyze
eloquent models, relationships and usage
pattern, route analysis. Let's, let's do
some real examples. Those are the main
features, but let's talk about what it
actually does. So
here's a few that you could try in
production that you might find useful.
So you could say PHP artisan
dev model where-used and then specify a
model name. So what this is gonna do is
this is going to surface for you all the
different places inside your code where
that model is used. So you might think to
yourself, "Well, couldn't I just command
click?" Yes, you could. You absolutely
could do that. However, it's going to give
you a CLI output of that. Here's
something that might be a little bit more
helpful though. Tracing a SQL query for a
particular route. So if you see a php
artisan dev sqltrace route games.index, it
will show you here all
of the
different SQL queries that were run when
you hit that route. Now that I can see
being pretty interesting, right? It's like
I, I, I'm interested in knowing what are
the SQL queries that are running for this
particular thing. You don't have to dig
all the way through. You don't have to go
through your service classes. It's just
like, "Here they are. I'll surface them
all for you." Pretty interesting.
Um, it can also analyze SQL queries, that
same thing where you say like, "Here's the
route." It can analyze SQL queries for
n+1 problems, duplicates or performance
issues. So you can point it at a route and
say, "This route seems to be slow. What's
the problem here?" And then it can go
through and say, "Oh, well there's 16
duplicates here. You know, you're querying
this thing 16 times, it's an n+1 query
here. And also you need an index on this."
That's, it seems like it's, it's slow,
right? Here's the query breakdown for you.
Um...You can do service provider
performance analysis. So you could say,
"Go through all the service providers,
roll through all of them, and if any of
them take more than 100 milliseconds to
load, tell me which ones those are." All
right? And it gives you this nice,
beautiful CLI output. Here's the number of
providers that you have, here's how many
are deferred, here's how many you have
that are slow, here's the ones that they
are, et cetera. There's a bunch more
commands you can try, as well as various
export formats, so it's not always just
going to the CLI. You can do JSON export
as well. Um, so this seems like something,
too, you could, like, pipe to other
outputs as well. So you could run
through... You could say, "Give me all my
routes, and then I want to do a slow query
analysis on all those, all those routes
that I have and, and run through them."
Um, so
some, some interesting tools there. Um,
yeah. Uh, worth checking out, for sure. If
that sounds interesting to you, Yannick,
thanks for writing that one up.
Into the tutorials. The first one we're
gonna talk about here today with... Really
the only one we'll talk about, 'cause
we've got the homework section coming up.
-This one is-
-Oh, that's right
... written by Moses Anumadu, and it talks
you through building a multi-step form
with Laravel, Livewire, and MongoDB. Talks
you through the project set up, getting
Livewire set up and installed, building
the Livewire component itself, and then
handling form data with Mongo, handling
the form in Livewire itself, and then
testing that as well. So, I think this is
the first time I've seen Moses put up a, a
tutorial on Laravel News, so shout out if
that is indeed your first time to Moses.
We also have from Harris Raftopoulos nine
of our framework reminders. We will link
to all of them for you in the show notes.
But we're talking about simplified batch
job creation with Laravel's enhanced
Artisan command. We've got fluent object
operations with Laravel's enhanced helper
utilities, advanced application
architecture through Laravel's service
container management, establishing
consistent data foundations with Laravel's
database population system. We're talking
about migrating and seeding here.
Laravel's use-policy attribute giving you
explicit authorization control, Laravel
global scopes and automatic query
filtering, controlling execution flow with
Laravel's sleep helper, maintaining data
consistency with Laravel database
transactions, and efficient context
management with Laravel's remember
functions.
If any of that has tickled your fancy,
we'll have links to them for you in the
show notes, as I said. And Harris has also
just tweeted, um, that he will have a
new, I think, video series coming right
here to Laravel News next week at the time
of this recording on Advanced Eloquent
Mastery. So if you're wanting to look into
that, it's gonna help you transform messy
controllers into clean and expressive
code. And from his perspective, this is
honestly going to help many Laravel devs.
He's gonna be sharing techniques that will
level up your Laravel and development
skills and make your code more
maintainable, and you can expect
practical, hands-on video tutorials with
real code examples that you can use
immediately. We'll have all of that for
you on Laravel News in the coming weeks.
Be sure to keep an eye out.
Speaking of keeping things clean, uh,
there's actually a
worldwide meetup, Laravel Worldwide
Meetup, on the 26th. So it'll be before
the next time we have this show. Um, and
the title of the talk is Keeping Laravel
Elegant When Business Gets Messy. Oh, my
word.
What a relevant topic, right? That sounds
awesome. And, uh, it seems similar to,
like, what Harris was talking about,
right? Like, keeping controllers clean,
expressive, whatever. So, Andy Hinkle. I
have no, I have no, uh, you know, no
affiliation... Oh, wait. You know. Lead
software developer on my team. Oh, Andy.
-That Andy. Yeah.
-Yeah, yeah.
So he's gonna be presenting on August
26th. Definitely don't sleep on that one.
It's gonna be, it's gonna be a good talk.
I'm really, really excited for that one.
Uh, so make sure you get a chance to watch
that. Should be great. Well, folks, that
-wrap-
-If you-
-Yeah. Go ahead, Michael
-... before you go, also-
-Yeah.
-If you, like Andy, want to present
somewhere and you've missed out at Laracon
US or Laracon AU, the Laravel Worldwide
-Meetup is a fantastic way-
-Absolutely
... to get your speaking repertoire up.
Margaret and Dan from the team at Vehicle
are fantastic hosts and, uh, custodians of
the Worldwide Meetup at the moment. You
can reach out to them. You can propose a
talk at meetup.laravel.com. And I think
Laracon EU just opened up their call for
papers for 2026. The conference is on
March the 2nd and 3rd, I believe,
probably, in Amsterdam once again. So,
definitely get your thinking caps on and
prepare some talk submissions for there as
well. It's all happening at the moment.
Love it.
Folks, episode 242 is a wrap. Thanks so
much for hanging out with us. Lar-
podcast.laravel-news.com/242 for show
notes is the place to find them. If you
liked the show, please rate it up. Five
stars would be incredible, helps people
find the show. And of course, if you have
any questions, we'd love to hear from you
on X, on Bluesky, on Twitter, whatever you
wanna call it. Uh, Michael de Wendel,
Jacob Bennett, or Laravel News, folks.
Till next time, it was so wonderful seeing
so many of you at Laracon. And, uh,
thanks so much for saying hi and saying
you listen. A lot of times it literally
feels like we're talking into the void,
-Michael.
-Mm-hmm. Mm-hmm.
I, I know I speak for both of us when I
say this.
-Yeah.
-It's like you do this every couple weeks.
You're like, "Is anybody listening to
this?" And so it was very encouraging to
hear from so many of you. It was wonderful
meeting you, and we will see you
next time.
Thanks, my friends.
Bye.
Creators and Guests

