naykel

naykel

Member Since 1 Year Ago

Experience Points
10,680
Total
Experience

4,320 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
99
Lessons
Completed
Best Reply Awards
0
Best Reply
Awards
  • 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.

    Subscriber

    Earned if you are a paying Laracasts subscriber.

  • lifer Created with Sketch.

    Lifer

    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 3
10,680 XP
Apr
26
1 month ago
Activity icon

Started a new Conversation Help With Mulit Layer Eager Loaded Relationship

I have a few relationships set up to reach into several tables and return a collection of eager loaded data.

studentCourse->belongsTo->Course
course->hasMany->Sections
sections->haveMany->media

In the controller I eager load all the data with

// collection of course data
$courseData = $studentCourse->load('course.sections.media');

This works perfectly but my problem is that I need one final relationship

media->hasMany->studentLesson

When I try to eager load the final relationship it returns all related records, not just the one I need

// This is returning all the related student lessons, not just the relevant one
$courseData = $studentCourse->load('course.sections.media.studentLesson');

This would be the query but I can not figure out where to put it.

SELECT * FROM student_lessons WHERE media_id = $mid and student_course_id = $scid

Any help would be greatly appreciated.

Feb
27
3 months ago
Activity icon

Replied to How To Access Eager Loaded Records From Single Model

Thank you @snapey this was exactly the answer.

Activity icon

Started a new Conversation How To Access Eager Loaded Records From Single Model

I am trying to work out how to access eager loaded when only dealing with a single record.

Here I am querying the database to return a menu named ‘main’ and eager loading the links related to this menu.

$menu =  Menu::where('name', 'main')->with('links')->get();

I want to loop throught and display the links but I can not figure out ho to do it without looping through the single menu first which seems counter productive because there is only one menu.

@foreach ($menu as $m)
    @foreach ($m->links as $l)
        {{ $l->name }}
    @endforeach
@endforeach

I have tried the following but it says that links in not in the collection.

@foreach ($menu->links as $menu)
    {{ $menu->name }}
@endforeach
}

Is there a better way?

Thanks in advance.

Feb
25
3 months ago
Activity icon

Replied to URI Not Working As Expected

Yes, I am looping through a collection and passing in the $page object. I actuall tried to pass in the id before I posted but got the same problem.

I have just gone back to using the named route because this is doing my head in. I have other routes where I have used the URI and they work fine so I will just put this unkown mystery category.

Feb
24
3 months ago
Activity icon

Started a new Conversation URI Not Working As Expected

I have a form and I can not figure out why I can not get the URI to work. I have no problem with the named route but for what ever reason the URI does not work as expected.

Route and Controller Method

Route::patch('/abc/pages/{page}', '[email protected]')->name('abc.pages');

public function update(Page $page){
    dd($page);
}

The named route works fine, exactly as expected it dumps the $page

<form method="POST" action="{{ route('abc.pages',  $page) }}">

However, when using the uri it returns a page not found and throws the $page object into the url

<form method="POST" action="/abc/pages/{{ $page }}">

What am I missing here?

Jan
31
4 months ago
Activity icon

Replied to Can't Read JavaScript From Mix Compiled File

Yes 100%, I check the compiled file and everything is in there.

Activity icon

Started a new Conversation Can't Read JavaScript From Mix Compiled File

Javascript is not my strong suit but this is doing my head in. I want to make a few javascript helper functions and for reasons I can not solve the functions are not available when compiled with mix.

If it take this function and compile it with mix, when I try to access it does nothing except throw an Uncaught ReferenceError: test is not defined

function test() {
  alert('loud and clear');
}
test();

If it take the very same code and paste it into public/js/app.js overiding the mix compiled code it works fine.

What am I doing wrong?

Jan
29
4 months ago
Activity icon

Replied to Selecting Single Option With CreateMany()

That will work, and is actually as good idea because if people need to re-sit the test the answers will be in a different postion.

I just trying to make it as felxible as possible so the creator could just move from field to file without much thought.

Another edge case would be if the creator accidentaly got the correct answer mixed up they would need to clear and re-enter both fields rather than just checking the correct box.

Activity icon

Started a new Conversation Selecting Single Option With CreateMany()

Select correct answer when creating quiz questions.

I am creating a multiple choice question for a quiz and looking for a way to indicate the correct answer at the same time the question options (answer) are created.

This is easy enough if you use a checkbox because you can just send through an additional is_correct field, however the risk of multiple correct answers being checked is high. Ideally I want to use a radio button but the name attribute needs to be the same and I can not figure ot how to indicate the correct answer in the database.

Controller The question options (answers) are throught the question with the saveMany() method.

<!-- Create question -->
$q = question->create('questions');
<!-- Create many answers (related to question) -->
$q->answers->createMany('answers');

Template

<!-- Create question_options array with checkbox -->
<!-- works but will be possible to check multiple answers -->
<input name="question_options[][answer]" type="text">
<input type="checkbox" name="question_options[0][is_correct]">

<input name="question_options[][answer]" type="text">
<input type="checkbox" name="question_options[1][is_correct]">

or

<!-- Create question_options array with radio -->
<!-- Ideal for single selection but can not get correct when persisting -->

<input name="question_options[][answer]" type="text">
<input type="checkbox" name="answer_id">

<input name="question_options[][answer]" type="text">
<input type="checkbox" name="answer_id">
Jan
17
4 months ago
Activity icon

Replied to Is There A Way You Change The Request Attribute Name To Match A Database Column?

I just realised I have had one of those brain snap moments when you spend so much time looking for some magic Laravel way that you forget the obvious. I was thing in terms of updating the database and did not think to just assign the value before persisting the database.

$validatedData['file_path'] = path from file instance;

This is the problem when you are trying to learn and you are spoiled with all the goodies Laravel provides. You stop thinking in terms of how do I code this and start think what is the magic way of doing this!

Thanks.

Activity icon

Started a new Conversation Is There A Way You Change The Request Attribute Name To Match A Database Column?

I have a database field called file_path and the input name is file so the validation does not work because they are different names.

I know the obvious answer is to change the input name to match the column name but in this particular case I find that complicates things. I see file as the file instance and file_path as the path that comes from the file instance.

Jan
09
4 months ago
Activity icon

Replied to Verification Emails Not Working With SMTP

I have just tested on my live server and it works fine!!!

This problem seems to be isolated to sending the verify email working on localhost.

Activity icon

Replied to Verification Emails Not Working With SMTP

You can overiide in the .env file by adding MAIL[email protected] and MAIL_FROM_NAME=FromYou

Activity icon

Replied to Verification Emails Not Working With SMTP

I have checked all the obvious things because you are right in saying that it normall turns out to be something silly, however this time round it is not the case. If it were the case the contact form which uses the same credentials would not work either.

I also check with telescope and all the details are correct.

Activity icon

Replied to Verification Emails Not Working With SMTP

Yes. It is important that anyone that reads this is aware that the verification email works fine when using mailtrap and mailgun. The problem ONLY exists when using my own SMTP settings even tho I can use them to send other emails.

This would be so much easier to solve it they all failed but they don't!

Activity icon

Replied to Verification Emails Not Working With SMTP

I have tested and the SMTP setting are definitaly correct.

Just to clarify, I am able to send emails without any problems using the mailable class, this issue only occurs when sending the verification email after a user registers. The registration is successful are no errors are displayed so it appears to be working fine except there is no email for the user to verify their account.

Activity icon

Started a new Conversation Verification Emails Not Working With SMTP

I would like to send user verification emails; I have tested with mail trap and it works fine but when I use my SMTP settings it no longer works.

I have checked my settings and can confirm they are fine if for no other reason than I have other mailables set up that work fine.

I done some further testing using mail gun and can confirm that the verification email was sent.

This problem seems to only occur when sending a verification email using my own SMTP settings.

Any suggestions?

Dec
16
5 months ago
Activity icon

Replied to Temporary Collection Attribute

Something so simple. I spent so much time trying to find some magic Laravel method that I did not even think of the direct approach. Cheers.

public function index() {

    $currentCourses = StudentCourse::current();
    
    foreach ($currentCourses as $cc) {
        
        $started_at = Carbon::parse($cc->started_at);
        $now = Carbon::now();
        $validForDays = 100;
        
        $daysRemaining = Carbon::parse($started_at)->diffInDays($now);
        
        $cc['daysRemaining'] = $daysRemaining;
    }
    
    return view('user.dashboard')->with('currentCourses', $currentCourses);
}

Template

@foreach ($currentCourses as $cc)

Days Remaining: {{ $cc->daysRemaining }}

@endforeach
Dec
15
5 months ago
Activity icon

Started a new Conversation Temporary Collection Attribute

Is there a way to add an additional temporary attribute in a collection?

To be clear, I do not want to permanently store the value in the database as it is a days remaining count down which when the days remaining = 0 the item will no longer appear in the collection anyway. This is purely a visual for the UX.

This is the logic to work out the days remaining

// Parse the database date
$started_at = Carbon::parse(StudentCourse::find(4)->started_at);
$now = Carbon::now();
$validForDays = 100;


$daysRemaining = Carbon::parse($started_at)->diffInDays($now);

This is the method that returns the collection

public function index() {

    $data = [
        // add days to expire in this colection???
        'currentCourses' => StudentCourse::current(), // courses not expired
    ];

    return view('user.dashboard')->with($data);
}

This would be the ideal method to display the values in the front-end

@foreach ($currentCourses as $cc)

{{-- This value is not in the collection --}}
<p>Days Remaining: {{ $cc->daysRemaining }}</p>

@endforeach
Dec
10
5 months ago
Activity icon

Replied to Create Redirect Method With Switch Statement

Simple as adding return

return $this->redirectTo()

Dec
08
5 months ago
Activity icon

Started a new Conversation Create Redirect Method With Switch Statement

Hello, I have created a reusable toolbar setting the buttons with different values so I can perform redirects using a switch statement base on the values. For the most part this works exactly exactly as I want..

public function update(Course $course)   {

    // other validate and save actions goes here

    switch (request('action')) {

        case 'save_stay':
            return back()->with('flash', 'Course saved!');
            break;

        case 'save_close':
            return redirect('admin/courses')->with('flash', 'Course saved!');
            break;

        case 'save_new':
            return redirect(route('admin.courses.create'))->with('flash', 'Course saved!');
            break;

        case 'back':
            return redirect('admin/courses');
            break;
    }
}

This toolbar works for both storeand update methods so I would like to make a resuable function, however the redirects no longer work. What am I missing here?

public function store(Course $course) {

    // other validate and save actions goes here

    $this->redirectTo(request('action'));
}

public function update(Course $course) {

    // other validate and save actions goes here

    $this->redirectTo(request('action'));
}

public function redirectTo($action)  {
    switch ($action) {

        case 'save_stay':
            return back()->with('flash', 'Course saved!');
            break;

        case 'save_close':
            return redirect('admin/courses')->with('flash', 'Course saved!');
            break;

        case 'save_new':
            return redirect(route('admin.courses.create'))->with('flash', 'Course saved!');
            break;

        case 'back':
            return redirect('admin/courses');
            break;
    }
}
Dec
03
6 months ago
Activity icon

Replied to SOLID Design Principles And Data Manipluation

Thanks for the input, I see that there are many ways and all of your answers gave me a little more clarity and if nothing more gave me some better questions to google. Time to stop procrastinating and get things done!

Dec
02
6 months ago
Activity icon

Started a new Conversation SOLID Design Principles And Data Manipluation

I am trying to adopt the SOLID design principles while keeping with the 'Single Responsibility Principle' I have moved my form validation from my controller to it own 'Form Request'. While this seemed pretty straight it some cases it raised more questions, specifically when it comes to data manipulation.

For example, I have recently discovered it is considered good practice to store money values in cents. Therefore at some point there needs to be a calculation to manipulate the value from dollars to cents or vice versa.

Should this be done in the 'UpdateProductRequest' or the 'ProductController' or somewhere else again?

// ProductController
public function update(ValidateProduct $request, Product $product) {

    $validatedData = $request->all();

    $product->update($validatedData);
    
}


// UpdateProductRequest
public function rules()
{
    $validatedData = [
        'name' => 'required|min:3',
        'price' => 'sometimes|numeric',
    ];
    
    $validatedData['price'] = $validatedData['price'] * 100;
    
    return $validatedData;
}