Member Since 4 Years Ago

Coeur d’ Alene

Experience Points

260 experience to go until the next level!

In case you were wondering, you earn Laracasts experience when you:

  • Complete a lesson — 100pts
  • Create a forum thread — 50pts
  • Reply to a thread — 10pts
  • Leave a reply that is liked — 50pts
  • Receive a "Best Reply" award — 500pts
Lessons Completed
Best Reply Awards
Best Reply
  • start your engines Created with Sketch.

    Start Your Engines

    Earned once you have completed your first Laracasts lesson.

  • first-thousand Created with Sketch.

    First Thousand

    Earned once you have earned your first 1000 experience points.

  • 1-year Created with Sketch.

    One Year Member

    Earned when you have been with Laracasts for 1 year.

  • 2-years Created with Sketch.

    Two Year Member

    Earned when you have been with Laracasts for 2 years.

  • 3-years Created with Sketch.

    Three Year Member

    Earned when you have been with Laracasts for 3 years.

  • 4-years Created with Sketch.

    Four Year Member

    Earned when you have been with Laracasts for 4 years.

  • 5-years Created with Sketch.

    Five Year Member

    Earned when you have been with Laracasts for 5 years.

  • school-in-session Created with Sketch.

    School In Session

    Earned when at least one Laracasts series has been fully completed.

  • welcome-newcomer Created with Sketch.

    Welcome To The Community

    Earned after your first post on the Laracasts forum.

  • full-time-student Created with Sketch.

    Full Time Learner

    Earned once 100 Laracasts lessons have been completed.

  • pay-it-forward Created with Sketch.

    Pay It Forward

    Earned once you receive your first "Best Reply" award on the Laracasts forum.

  • subscriber Created with Sketch.


    Earned if you are a paying Laracasts subscriber.

  • lifer Created with Sketch.


    Earned if you have a lifetime subscription to Laracasts.

  • evangelist Created with Sketch.

    Laracasts Evangelist

    Earned if you share a link to Laracasts on social media. Please email [email protected] with your username and post URL to be awarded this badge.

  • chatty-cathy Created with Sketch.

    Chatty Cathy

    Earned once you have achieved 500 forum replies.

  • lara-veteran Created with Sketch.

    Laracasts Veteran

    Earned once your experience points passes 100,000.

  • 10k-strong Created with Sketch.

    Ten Thousand Strong

    Earned once your experience points hits 10,000.

  • lara-master Created with Sketch.

    Laracasts Master

    Earned once 1000 Laracasts lessons have been completed.

  • laracasts-tutor Created with Sketch.

    Laracasts Tutor

    Earned once your "Best Reply" award count is 100 or more.

  • laracasts-sensei Created with Sketch.

    Laracasts Sensei

    Earned once your experience points passes 1 million.

  • top-50 Created with Sketch.

    Top 50

    Earned once your experience points ranks in the top 50 of all Laracasts users.

Level 6
29,740 XP
1 month ago
Activity icon

Commented on Jetstream

When using Jetstream with Livewire is there any reason Taylor doesnt take advantage of Livewires live validation? If I type a name under 8 characters and submit I get a validation error, like I should. But when I build my forms I use the live validation that happens when a person types so they dont have to submit to see they are doing something wrong, generally a better UX in my opinion. Just seems kind of odd not to do it that way since even Livewire docs push that. So if I want that, I will have to publish all the files and change it I assume.

3 months ago
Activity icon

Replied to Issue With Encryption Decryption In Laravel Query Builder

How did you end up doing this? I am trying to search encrypted data with Laravel Nova

Activity icon

Replied to Change How Resousrce And Global Search Work

Okay, so if I do this:

public static function indexQuery(NovaRequest $request, $query)
        if (request()->filled('search')) {
            $term = $request->search;

            $matches = AppConsumer::all()->filter(function ($record) use ($term) {
                if ($record->email == $term) {
                    return $record;

            return $matches;

        return $query;

it returns noting. But if I dd($matches); before the return it shows what I need. What am I missing?

Activity icon

Replied to Change How Resousrce And Global Search Work

Is there any docs on this? I guess I dont understand what ->filled('filters') is and $query->whereNull('downloaded_at'); or is that just and example?

Activity icon

Started a new Conversation Change How Resousrce And Global Search Work

Right now my app only has 2 resources I want searched. Both resources will need to search an email column that is encrypted. I currently use something like this to find the records since they are encrypted:

Consumer::all()->filter(function ($record) use ($email) {
            if ($record->email == $email) {
                return $record;

How can I adjust the how "search" is done? Its a must for the app per the client, but so is encrypting PII. I should be able to use that same chunk of code if I knew where to overwrite how to search

4 months ago
Activity icon

Started a new Conversation Ignore Error From Mail Method

Is there a way to ignore any errors from a Mail method? Here is the scenario, I have an online ordering system that doesn't require you to be a user. When someone places and order, the controller stores the order in the DB and then sends an email to the customer "hey we got your order, here is the receipt". This works great until a user misspells his email. So 1 out of every 1000 orders someone will accidentally use something like "@gmail.con" instead of "". When Mailgun goes send it the systems throws a 500 error because its not a real email. This then pops up on the users screen so they think the order wasn't placed even though it was. How to you handle this? Can you ignore an error from Mail::to($this->email)->send(new NewOrderCustomer($order, $location)); so if they use a wrong email its just on them? We just dont want users to place 10 orders because they think its an order error. Or how can you verify its a real email?

4 months ago
Activity icon

Started a new Conversation Storage PutFile 504 Error

I am uploading a large file to S3 and getting a 504 Gateway Timeout error returned to me. That confusing part is the file does indeed still upload, but on the frontend after a bit I get the 504 error? I am streaming the file so I thought this would prevent burning resources?

Here is the full code:

 public function store(Request $request)

            'email' => 'required|email',
            'video' => 'required',

        if ($request->hasFile('video')) {

            //Upload original file
            $original_key = Storage::putFile(
                new File($request->file('video')),
                ['Content-Disposition' => 'attachment']

            //Convert file for preview
            $config = [
                'PresetId' => '1351620000001-100070',
                'width'  => 1920,
                'height' => 1080,
                'aspect' => '16:9',
                'ext'     => 'mp4',
                'PipelineId' => env('PIPELINE_ID'),

            $elastcoder = new ElastcoderAWS();

            $original_array = explode('/', $original_key);
            $preview_key = end($original_array);

            $thumbPattern = "thumbnails/{$preview_key}-{count}";

            $job = $elastcoder->transcodeVideo($original_key, $preview_key, $config,  $thumbPattern);

            $submission = new Submission();

            $submission->email = $request->input('email');
            $submission->original = config('filesystems.disks.s3.url') . $original_key;
            $submission->preview = config('filesystems.disks.s3.url') . $preview_key;
            $submission->thumbnail = config('filesystems.disks.s3.url') . "thumbnails/{$preview_key}-00001.png";
            $submission->transcoding_id = $job["Id"];


            return response()->json([
                'submission' => $submission,
                'message' => 'Video Upload. Good Luck!!!'
        } else {

            return response()->json([
                'submission' => false,
                'message' => 'Upload Error. Please try again later.'
4 months ago
Activity icon

Replied to Re Check If Statment

After some research the best way would probably be a command with a cron job.

Activity icon

Started a new Conversation Update Resource From Index

Is there a way to update a resource record from the index view? I would imagine I could create a custom field to do this but have not seen much information. All I found in the FormField.vue file of a custom field is methods on how to populate the value and pass the value to the formdata in the edit view.

Here is the use case: many time when I have an backend that handles things like orders, it seems like a good UX would be to update an orders status from the index view, not click to edit, click select a new status, click save. From index view you could have a select field that would save the new status value when its changed. Much faster for something simple like that.

Anyone had experience with this?

Activity icon

Started a new Conversation Re Check If Statment

What is the best way to keep checking a condition until it is true? I know there is a while statement in PHP but was not sure if there is a better packaged way in Laravel.

Basically I am transcoding a video through AWS. I want the frontend to keep saying "Uploading" until I know the video is transcoded and saved in AWS and all info is in the database. The videos will be short, but still transcoding is not instant so if I do:

if ($job['Status'] == 'complete') {

                    $submission = new Submission();

                    $submission->email = $request->input('email');
                    $submission->original = config('filesystems.disks.s3.url') . $original_key;


                    return response()->json([
                        'submission' => $submission,
                        'message' => 'Upload Successful. Good luck!!!!',
                        'job' => $job

This if statement will be false right away. But if I checked again every few seconds it will pass after a little bit. Is there a pulse type function to continue to run that if statement every X amount of time until it passes? Using a while seems to be hitting max_execution_time the limit.

4 months ago
Activity icon

Replied to Video Field

@m7vm7v thanks. I looked at the Nova Packages website already (usually my first stop). I will just move on to making a custom field I guess, just didnt want to reinvent the wheel if there was something. I forgot Laracasts has a whole video on this as well.

Activity icon

Started a new Conversation Video Field

Is there any way to preview a video file in Nova? Basically people submit videos from the frontend and we want to preview the video we uploaded to our S3 through Nova. I figured there would be a video field but I cant seem to find one.