ampersand

ampersand

Member Since 4 Years Ago

Experience Points 5,280
Experience Level 2

4,720 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 64
Lessons
Completed
Best Reply Awards 0
Best Reply
Awards
  • start-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-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-token Created with Sketch.

    Subscriber

    Earned if you are a paying Laracasts subscriber.

  • lifer-token Created with Sketch.

    Lifer

    Earned if you have a lifetime subscription to Laracasts.

  • lara-evanghelist 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.

17 Jul
1 month ago

ampersand left a reply on Set Default Value On Hidden Fields

Hi Everyone,

I came out with this solution:

public static function boot()
    {
        parent::boot();

        static::creating(function ($client) {
            if(empty($client->user_id)) {
                $client->user_id = auth()->user()->id;
            }
        });
    }

Adding this code to the Model, will set default values while creating an object.

I'm not sure about this, but those other Hooks, could also be used: retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored

Cheers, Davide

09 Jul
1 month ago

ampersand left a reply on Set Default Value On Hidden Fields

But I don't have access to the "client_id" of the user starting the event from the listener, that means I can't set the same "client_id" to the new user dynamically. Am I wrong?

08 Jul
1 month ago

ampersand started a new conversation Set Default Value On Hidden Fields

Hi,

I found this interesting section on the Laravel Nova's Documentation page: https://nova.laravel.com/docs/2.0/resources/authorization.html#fields

I want to hide some fields based on a user role (defined using policies), but I'd like to set a default value when this is the case. I try to explain what I'm trying to achieve a little better:

An admin should be able to assign a client to a user via a relationship field on the user model, so admins should be able to see a field on the user creation and update pages to select which client the user belongs to. Regular users can invite (and create) other users, but when they do, the new users should be assigned to the same client, the user creating the new user belongs to.

Any idea about how I could solve this using Nova?

Thanks for the help :)

ampersand left a reply on Laravel Nova As CRM: Filtering Displayed Data By Logged-in User

Great, thank you very much! This is exactly what I was searching for.

03 Jul
1 month ago

ampersand started a new conversation Laravel Nova As CRM: Filtering Displayed Data By Logged-in User

Hi,

I have this project where I need to develop a kind of CRM for a client using Laravel Nova.

Admins should be able to see data of every client and customers, but clients should only be able to see data of customers that belong to them.

How can I filter out resource tables to make sure that clients only see data of their customers and not those of other clients?

There is a way to extend the default Laravel Nova query depending on user group and/or roles? I didn't find anything about that on Nova's documentation site.

Thanks for the help!

Davide

07 Aug
3 years ago

ampersand started a new conversation Event Guest List - Database Structure

Hi, I'm stuck with a problem.

I need to recreate something similar to Facebook events. When the user receive an invitation the status of the user for that event is invited, when he decided to go to the event he can choose to change the status in going, and if he is only interested in following updates about the event he can set the status to interested.

Now, I was thinking to create a table guest_lists with the following columns:

[...]
Schema::create('guest_lists', function (Blueprint $table) {
    $table->increment('id');
    $table->integer('event_id')->unsigned();

    $table->foreign('event_id')->references('id')->on('events')->onUpdate('cascade')->onDelete('cascade');
});
[...]

Then using a many-to-many relation, defining another table in order to assign a user to a guest_list:

[...]
Schema::create('guest_list_user', function (Blueprint $table) {
    $table->integer('guest_list_id')->unsigned();
    $table->integer('user_id')->unsigned();
    $table->integer('status_id')->unsigned();

    $table->foreign('guest_list_id')->references('id')->on('guest_lists')->onUpdate('cascade')->onDelete('cascade');
    $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
    $table->foreign('status_id')->references('id')->on('statuses')->onUpdate('cascade')->onDelete('cascade');
});
[...]

On that table there is also a status_id column because I would like to define here if the user is interested, is going, is invited, or not going.

So I have then another table for statuses as follow:

[...]
Schema::create('statuses', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
});
[...]

Until here I don't see big problems, but defining those relations in models is becoming a little bit complicated for me.

The User.php model is as follow:

[...]
    public function events()
    {
        return $this->belongsToMany('App\Event');
    }

    public function guest_lists()
    {
        return $this->belongsToMany('App\GuestList');
    }
[...]

The Event.php model is:

[...]
    public function guest_list()
    {
        return $this->hasOne('App\GuestList');
    }
[...]

On the model GuestList.php I have then:

[...]
    public function users()
    {
        return $this->hasMany('App\User');
    }

    public function event()
    {
        return $this->belongsTo('App\Event');
    }
[...]

But now on the model Status.php, what I need to define in order to relate the statuses table to the guest_list_user?

Maybe what I'm trying to do is to much complicated, I don't have enough experience in database design. Thank you for helping.

ampersand left a reply on Delay Between Processes In Job Queue

@d3xt3r the suggested code still execute 2-4 jobs per second, even if I define $numberOfJobsPerSecond = 1;.

05 Aug
3 years ago

ampersand left a reply on Delay Between Processes In Job Queue

Finally I think I misunderstood how Queues works. I think there is no control on how much jobs should the queue execute each seconds. I was using the ->delay(1) wondering why didn't worked, but the reality is that this function delays only the execution of the first job in the queue. To achieve what I needed, I had to modify my previously submitted code this way:

<?php

namespace App\Http\Controllers;

use App\Condition;
use App\City;
use DB;
use App\Jobs\FetchConditions;

class ConditionsController extends Controller
{
    public function fetchConditions() {
        $stations = Station::all();
    $this->dispatch(new FetchConditions($stations));

        return 'Fetching Conditions...';
    }
}

Using the foreach in the Job class using the suggested sleep(1) method:

<?php

namespace App\Jobs;

use App\City;

class RetrieveStations extends Job
{
    protected $cities;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct ($cities)
    {
        $this->cities = $cities;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {

        foreach($this->cities as $city) {
            
        // code here

            sleep(1);
        }

    }
}

Now the job runs in background and the request to the Weather API will be execute each second.

Thank you all for the help!

ampersand left a reply on Delay Between Processes In Job Queue

@jekinney, but that will delay the insertion of the job in the queue, I need to be able to define an execution limit on the queue side. Maybe Redis has some configuration to achieve that? I didn't found anything about it. My way to approach the problem could be most likely be the not the correct one. Maybe there are other ways than using a Queue to limit API request to 60 per minute.

20 Jul
3 years ago

ampersand left a reply on Delay Between Processes In Job Queue

@TylerODonnell Yes I know, I've choosen one second to excecute 60 jobs in a minute (with one worker). However that isn't happening (still get 3/4 jobs excecuted each second). Any idea?

ampersand left a reply on Delay Between Processes In Job Queue

Hi there,

thanks for your suggestions. Here is what I've tried:

<?php

namespace App\Http\Controllers;

use App\Condition;
use App\City;
use DB;
use App\Jobs\FetchConditions;

class ConditionsController extends Controller
{
    public function fetchConditions() {
        $stations = Station::all();

        foreach($stations as $station) {
            $job = (new FetchConditions($city))->delay(1);
            $this->dispatch($job);
        }

        return 'Fetching Conditions...';
    }
}

When I run the queue, it still execute 3/4 jobs each seconds. Something wrong on my code?

ampersand started a new conversation Delay Between Processes In Job Queue

Hi,

I'm working on a project that use the OpenWeather API. On OpenWeather is possible to obtain an API key for free if there are no more than 60 request per minute.

For my project, I need to retrieve the current weather data for 2'000 cities each hour. So I've thought I could work with the Queue function of Laravel, which run the requests in background and retry to run the task in case of errors.

Here the question, is it possible to limit the Job Queue in order to run only one process each second (and not 3 or 4 per second)? If yes, how could I do that?

Thank you very much for the help!

Davide