bosnadev / database

An extended PostgreSQL driver for Laravel 5 with support for some aditional PostgreSQL data types: hstore, uuid, jsonb.
https://bosnadev.com
MIT License
78 stars 69 forks source link

Can't get Laravel 5 to recognize Bosnadev\Database\Schema\Blueprint #14

Open RyanSimon opened 9 years ago

RyanSimon commented 9 years ago

I'm having an issue getting migrations to work with this package.

The problem seems to be a class loading issue, but I'm not 100% sure. Here's what my migration file looks like:

use Bosnadev\Database\Schema;
use Bosnadev\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class TestMigration extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('test', function(Blueprint $table)
        {
            $table->engine = "InnoDB";

                $table->increments('id');
            $table->uuid('public_uid');
            $table->uuid('private_uid');

            $table->softDeletes();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('test');
    }
}

Here's the error I get when trying to migrate:

[ErrorException]                                                                                                                                                                              
  Argument 1 passed to TestMigration::{closure}() must be an instance of Bosnadev\Database\Schema\Blueprint, instance of Illuminate\Database\Schema\Blueprint given, called in /Users/mydir/LaravelProjects/laravel5/vendor/illuminate/database/Schema/Builder.php on line 132 and defined

I'm hoping other users, or @mirzap might be able to help me troubleshoot this issue. Thanks!

mirzap commented 9 years ago

This is an extension of a PostgreSQL connector so you don't need $table->engine = "InnoDB"; I think you could do just fine if you use Illuminate Blueprint:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

since my Blueprint is already hooked to SchemaBuilder. Just add DatabaseServiceProvider to the service providers in config/app.php:

....
Bosnadev\Database\DatabaseServiceProvider::class,

I tested it:

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class Test extends Migration
{
    public function up()
    {
        Schema::create('test', function(Blueprint $table)
        {
            $table->engine = "InnoDB";

            $table->increments('id');
            $table->uuid('public_uid');
            $table->uuid('private_uid');

            $table->softDeletes();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('test');
    }
}

and here is a result:

postgres=# \c homestead
You are now connected to database "homestead" as user "postgres".
homestead=# \d+ test

                                                           Table "public.test"
   Column    |              Type              |                     Modifiers                     | Storage | Stats target | Description 
-------------+--------------------------------+---------------------------------------------------+---------+--------------+-------------
 id          | integer                        | not null default nextval('test_id_seq'::regclass) | plain   |              | 
 public_uid  | uuid                           | not null                                          | plain   |              | 
 private_uid | uuid                           | not null                                          | plain   |              | 
 deleted_at  | timestamp(0) without time zone |                                                   | plain   |              | 
 created_at  | timestamp(0) without time zone | not null                                          | plain   |              | 
 updated_at  | timestamp(0) without time zone | not null                                          | plain   |              | 
Indexes:
    "test_pkey" PRIMARY KEY, btree (id)