ryanrapini

ryanrapini

Member Since 1 Year Ago

Experience Points 3,760
Experience
Level
Lessons Completed 37
Lessons
Completed
Best Reply Awards 0
Best Answer
Awards
  • Start Your Engines Achievement

    Start Your Engines

    Earned once you have completed your first Laracasts lesson.

  • First Thousand Achievement

    First Thousand

    Earned once you have earned your first 1000 experience points.

  • One Year Member Achievement

    One Year Member

    Earned when you have been with Laracasts for 1 year.

  • Two Year Member Achievement

    Two Year Member

    Earned when you have been with Laracasts for 2 years.

  • Three Year Member Achievement

    Three Year Member

    Earned when you have been with Laracasts for 3 years.

  • Four Year Member Achievement

    Four Year Member

    Earned when you have been with Laracasts for 4 years.

  • Five Year Member Achievement

    Five Year Member

    Earned when you have been with Laracasts for 5 years.

  • School In Session Achievement

    School In Session

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

  • Welcome To The Community Achievement

    Welcome To The Community

    Earned after your first post on the Laracasts forum.

  • Full Time Learner Achievement

    Full Time Learner

    Earned once 100 Laracasts lessons have been completed.

  • Pay It Forward Achievement

    Pay It Forward

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

  • Subscriber Achievement

    Subscriber

    Earned if you are a paying Laracasts subscriber.

  • Lifer Achievement

    Lifer

    Earned if you have a lifetime subscription to Laracasts.

  • Laracasts Evangelist Achievement

    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 Achievement

    Chatty Cathy

    Earned once you have achieved 500 forum replies.

  • Laracasts Veteran Achievement

    Laracasts Veteran

    Earned once your experience points passes 100,000.

  • Ten Thousand Strong Achievement

    Ten Thousand Strong

    Earned once your experience points hits 10,000.

  • Laracasts Master Achievement

    Laracasts Master

    Earned once 1000 Laracasts lessons have been completed.

  • Laracasts Tutor Achievement

    Laracasts Tutor

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

  • Laracasts Sensei Achievement

    Laracasts Sensei

    Earned once your experience points passes 1 million.

  • Top 50 Achievement

    Top 50

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

30 Oct
2 weeks ago

ryanrapini started a new conversation Using Unique() On A Relationship Result

I have many quote_requests which each have a one to one relationship with an item. I am trying to generate a list of all the distinct types on the item, but I need to filter with some data on the quote_request.

App\QuoteRequest {#3634
         id: 6,
         created_at: "2018-10-28 19:28:47",
         item_id: 6,
         item: App\Item {#3643
             id: 6,
             type: "banana",
         },
 },
App\QuoteRequest {#3635
         id: 7,
         created_at: "2018-10-29 19:28:47",
         item_id: 7,
         item: App\Item {#3643
             id: 7,
             type: "banana",
         },
 },

I tried fetching QuoteRequest::all()->load('item'); and then using unique on the collection:

$unique = $data->unique(function ($item) {
      return $item->item->type;
});

But I get 'Call to a member function unique() on array' which doesn't make a lot of sense to me.

Or is there a way to do this with a query, before I fetch the collection?

I tried something like QuoteRequest::select('id', '>', 4)->with(['item'=>function($query){$query->select('id', 'type');}])->get()but couldn't figure out how to use distinct().

Any help? Thanks in advance

09 Oct
1 month ago

ryanrapini started a new conversation Writing Route Tests With Proper Feedback

Hey Guys!

I've added simple route tests to my code to ensure that routes on my site are properly secured. All the route tests do is check to see that the status is returned correctly.

class RouteTest extends TestCase
{
    public function testUnprotectedRoutes()
    {
        $urls = [
            '/',
            '/password/reset',
            '/garbage'
        ];
        $this->checkArray($urls, 200);
    }

    public function checkArray($urls, $expectedStatus)
    {
        foreach ($urls as $url) {
            $response = $this->get($url);
            $response->assertStatus($expectedStatus);
        }
    }
}

The problem with this is if a route fails. In the example above, the third item in the array, /garbage fails with 404.

The error output I get when running php artisan dusk is largely unhelpful:

There was 1 failure:

1) Tests\Feature\RouteTest::testUnprotectedRoutes
Expected status code 200 but received 404.
Failed asserting that false is true.

/Users/Ryan/Projects/labspend-laravel/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:124
/Users/Ryan/Projects/labspend-laravel/tests/Feature/RouteTest.php:32
/Users/Ryan/Projects/labspend-laravel/tests/Feature/RouteTest.php:24

This tells me that one of the items in the array failed but does not clue me in as to which one - line 24 is, of course, the call to checkArray.

Is there a way to output a more meaningful error that would say "Failed to load route '/garbage'"?