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.