Boost, Inertia Forms, and multiple personas

Download MP3

This 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

Michael Dyrynda
Host
Michael Dyrynda
Dad. @laravelphp Artisan. @LaraconAU organiser. Co-host of @northsouthaudio, @laravelnews, @ripplesfm. Opinions are mine.
Boost, Inertia Forms, and multiple personas
Broadcast by