turkalicious

turkalicious

Member Since 6 Years Ago

Experience Points
16,090
Total
Experience

3,910 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
195
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 4
16,090 XP
Mar
25
5 days ago
Activity icon

Replied to Encapsulating A Capsule Instance

I've changed my model to the following and it works. I am still not understanding why though. Can someone please explain to me? Is it because I am using class object methods this time instead of the static methods from earlier? Below is the only part I changed

    public function getClientDBs()
    {    
        return $this->capsule->getConnection('information_schema')
                ->table('SCHEMATA')
                ->select('SCHEMA_NAME as db') 
                ->get();
    }
   
    private function setCapsule()
    { 
        // get connection capsule to the db
        $this->capsule = new Capsule; 
            
        $this->capsule->addConnection([
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => $this->dbName,
            'username'  => $this->dbUser,
            'password'  => $this->dbPassword,
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ], $this->dbName);
    }
Activity icon

Started a new Conversation Encapsulating A Capsule Instance

Hello all,

I am trying to write a database model outside of laravel and I wanted to utilize the illuminate database package. In my database model class, I have

use Illuminate\Database\Capsule\Manager as Capsule;  

class DatabaseModel
{     

    public function __construct(String $database, String $username, String $password)
    {      
        
        // set database name in class
        $this->setDBName($database);
        $this->dbUser = $username;
        $this->dbPassword = $password;
        
        // get connection handle to the db
        $this->setHandle($database); 

 // Setup the Eloquent ORM
        $this->handle->bootEloquent();
        // Make this Capsule instance available globally via static methods 
        $this->handle->setAsGlobal(); 
    }
    private function setHandle($dbName)
    {
        try {
            $this->handle = new Capsule;
            
            $this->handle->addConnection([
                'driver'    => 'mysql',
                'host'      => 'localhost',
                'database'  => $dbName,
                'username'  => $this->dbUser,
                'password'  => $this->dbPassword,
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
            ], $dbName);

           
        } catch (\PDOException $e) {
            return $e->getMesssage();
        } catch (Throwable $e) {
            return $e->getMessage();
        }  
public function getClientDBs()
    {   
        return $this->handle::table('SCHEMATA')
                ->select('SCHEMA_NAME as db') 
                ->get();
    }
    }

and in my library class I make two instances of this database model with two different db names

class CheckQueue 
{    

    public function __construct(String $hourMinimum = '6')
    { 
        try { 
            if (! $this->hasSetup)
                $this->setup();

            $this->log = $this->logger->withName('Queue');
            $this->hourInterval = $hourMinimum; 

            // connect to db
            $this->ischema = new DatabaseModel('information_schema', $this->dbUser, $this->dbPassword);
            $this->client = new DatabaseModel('clientDB', $this->dbUser, $this->dbPassword);
            // // get a list of district databases 
            $this->clientDBs = $this->ischema->getClientDBs();


but then I get the error that says clientDB.SCHEMATA does not exist. If I reverse instance creations, it works because info schema becomes the latest one. I dont understand why it is using the client handle because I am calling it through the $this->ischema variable. I feel like I am missing something here. I'd greatly appreciate your inputs. Thank you