Giter Site home page Giter Site logo

shahinsorkh / laravel-cassandra Goto Github PK

View Code? Open in Web Editor NEW
22.0 22.0 14.0 1.34 MB

A Query builder with support for Cassandra, using the original Laravel API. This library extends the original Laravel classes, so it uses exactly the same methods.

Home Page: https://shahinsorkh.github.io/laravel-cassandra/

License: MIT License

PHP 96.16% Dockerfile 1.26% Shell 2.58%
cassandra cassandra-driver laravel laravel-cassandra laravel-package

laravel-cassandra's People

Contributors

cubetsijoy avatar cubettech avatar rennymroy avatar shahinsorkh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

laravel-cassandra's Issues

Using migration throws exception

I have the following code to use migration for creating a new table in Lumen. This is the code that I have:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use ShSo\Lacassa\Schema\Grammar;


class CreateUsersByEmail extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        DB::connection("cassandra")->setSchemaGrammar(new ShSo\Lacassa\Schema\Grammar());
        $schema = DB::connection()->getSchemaBuilder();
        $schema->blueprintResolver(function($table, $callback) {
            return new \ShSo\Lacassa\Schema\Blueprint($table, $callback);
        });

        $schema->create('users_by_email', function ($table) {
            $table->uuid('id');     //User ID
            $table->varchar("email");
            $table->varchar("first_name");
            $table->varchar("last_name");
            $table->timestamp("email_verified_at");
            $table->varchar("password");
            $table->varchar("token");
            $table->timestamp("created_at");
            $table->timestamp("updated_at");
            $table->primary("email");
        });
    }

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

but I'm getting this exception when I'm trying to run php artisan -v migrate

In Connection.php line 326:
                                                           
  [Symfony\Component\Debug\Exception\FatalThrowableError]  
  Call to a member function prepare() on null              
                                                           

Exception trace:
 () at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Connection.php:326
 Illuminate\Database\Connection->Illuminate\Database\{closure}() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Connection.php:657
 Illuminate\Database\Connection->runQueryCallback() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Connection.php:624
 Illuminate\Database\Connection->run() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Connection.php:333
 Illuminate\Database\Connection->select() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Connection.php:304
 Illuminate\Database\Connection->selectFromWriteConnection() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Schema/Builder.php:75
 Illuminate\Database\Schema\Builder->hasTable() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Migrations/DatabaseMigrationRepository.php:169
 Illuminate\Database\Migrations\DatabaseMigrationRepository->repositoryExists() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Migrations/Migrator.php:583
 Illuminate\Database\Migrations\Migrator->repositoryExists() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Console/Migrations/MigrateCommand.php:91
 Illuminate\Database\Console\Migrations\MigrateCommand->prepareDatabase() at /home/masoud/Codes/TheSite/api/vendor/illuminate/database/Console/Migrations/MigrateCommand.php:63
 Illuminate\Database\Console\Migrations\MigrateCommand->handle() at n/a:n/a
 call_user_func_array() at /home/masoud/Codes/TheSite/api/vendor/illuminate/container/BoundMethod.php:32
 Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/masoud/Codes/TheSite/api/vendor/illuminate/container/BoundMethod.php:90
 Illuminate\Container\BoundMethod::callBoundMethod() at /home/masoud/Codes/TheSite/api/vendor/illuminate/container/BoundMethod.php:34
 Illuminate\Container\BoundMethod::call() at /home/masoud/Codes/TheSite/api/vendor/illuminate/container/Container.php:576
 Illuminate\Container\Container->call() at /home/masoud/Codes/TheSite/api/vendor/illuminate/console/Command.php:183
 Illuminate\Console\Command->execute() at /home/masoud/Codes/TheSite/api/vendor/symfony/console/Command/Command.php:255
 Symfony\Component\Console\Command\Command->run() at /home/masoud/Codes/TheSite/api/vendor/illuminate/console/Command.php:170
 Illuminate\Console\Command->run() at /home/masoud/Codes/TheSite/api/vendor/symfony/console/Application.php:921
 Symfony\Component\Console\Application->doRunCommand() at /home/masoud/Codes/TheSite/api/vendor/symfony/console/Application.php:273
 Symfony\Component\Console\Application->doRun() at /home/masoud/Codes/TheSite/api/vendor/symfony/console/Application.php:149
 Symfony\Component\Console\Application->run() at /home/masoud/Codes/TheSite/api/vendor/illuminate/console/Application.php:90
 Illuminate\Console\Application->run() at /home/masoud/Codes/TheSite/api/vendor/laravel/lumen-framework/src/Console/Kernel.php:115
 Laravel\Lumen\Console\Kernel->handle() at /home/masoud/Codes/TheSite/api/artisan:35

Can you please provide an instruction on how to use the migration with this library?
My installed Lumen version is 5.8.8 and laravel-cassandra version is 1.1.2

Coverage at least 80% of the src with tests

  • CassandraServiceProvider.php (100%)
  • Connection.php (89%)
  • Query/Builder.php (50%)
  • Query/Grammar.php (16.9%)
  • Schema/Blueprint.php (0%)
  • Schema/Builder.php (60%)
  • Schema/Grammar.php (0%)

codecov

Unsupported driver [cassandra]

Using Laravel 5.5.28 fresh installation, followed the steps, and here it goes...

errors pops up saying undefined index : database at vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php

config/database.php

'cassandra' => [
'driver' => 'cassandra',
.....
'keyspace' => env('DB_DATABASE', 'cassandra_db'),
],

And so I tried adding in 'database'
config/database.php

'cassandra' => [
'driver' => 'cassandra',
.......
'database' => env('DB_DATABASE', 'cassandra_db'),
'keyspace' => env('DB_DATABASE', 'cassandra_db'),
],

And now it says unsupported driver[cassandra]. to me it seems like it is still creating a single connection without using cassandra driver and it is using the default createConnection which is simply not in the switch case in that particular file

vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php

protected function createConnection($driver, $connection, $database, $prefix = '', array $config = [])
....
switch ($driver) {
case 'mysql':
return new MySqlConnection($connection, $database, $prefix, $config);
case 'pgsql':
return new PostgresConnection($connection, $database, $prefix, $config);
case 'sqlite':
return new SQLiteConnection($connection, $database, $prefix, $config);
case 'sqlsrv':
return new SqlServerConnection($connection, $database, $prefix, $config);
}
....

Query builder update throws error Undefined index: join

Describe the bug
I am trying to update a table, and i got an error.

Undefined index: join

#0 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(747): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined index...', '/var/www/demo...', 747, Array)
#1 /var/www/demo/project_x/vendor/shso/laravel-cassandra/src/Query/Builder.php(285): Illuminate\Database\Query\Grammars\Grammar->prepareBindingsForUpdate(Array, Array)
#2 /var/www/demo/project_x/app/Console/Commands/MigrateImagesToCloudStorage.php(234): ShSo\Lacassa\Query\Builder->update(Array)
#3 /var/www/demo/project_x/app/Console/Commands/MigrateImagesToCloudStorage.php(101): App\Console\Commands\MigrateImagesToCloudStorage->performCassandraOperation(NULL, NULL)
#4 [internal function]: App\Console\Commands\MigrateImagesToCloudStorage->handle()
#5 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#6 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#7 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#8 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#9 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\Container\Container->call(Array)
#10 /var/www/demo/project_x/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#11 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Console/Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#12 /var/www/demo/project_x/vendor/symfony/console/Application.php(992): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 /var/www/demo/project_x/vendor/symfony/console/Application.php(255): Symfony\Component\Console\Application->doRunCommand(Object(App\Console\Commands\MigrateImagesToCloudStorage), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 /var/www/demo/project_x/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Console/Application.php(88): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /var/www/demo/project_x/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /var/www/demo/project_x/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 {main}
$updateQuery = DB::connection('db_name')->table('table_name')->where('column_1', 'xxxxx')->update(['column_2' => 'yyyyy']);

To Reproduce
Just do a update query.

Expected behavior
Record needs to update without any errors

Actual behavior
Undefined index: join Error

Additional context
Laravel 5.5
Php 7.1
shso/laravel-cassandra ^1.1
OS : AWS Linux

Migrations are not working

At what seems to be last release migrations are not working.

Exception trace:

  1   Illuminate\Database\Connection::Illuminate\Database\{closure}("select * from information_schema.tables where table_schema = ? and table_name = ?")
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Connection.php:657

  2   Illuminate\Database\Connection::runQueryCallback("select * from information_schema.tables where table_schema = ? and table_name = ?", Object(Closure))
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624

  3   Illuminate\Database\Connection::run("select * from information_schema.tables where table_schema = ? and table_name = ?", Object(Closure))
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Connection.php:333

  4   Illuminate\Database\Connection::select("select * from information_schema.tables where table_schema = ? and table_name = ?")
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Connection.php:304

  5   Illuminate\Database\Connection::selectFromWriteConnection("select * from information_schema.tables where table_schema = ? and table_name = ?")
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:74

  6   Illuminate\Database\Schema\Builder::hasTable("migrations")
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php:169

  7   Illuminate\Database\Migrations\DatabaseMigrationRepository::repositoryExists()
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:556

  8   Illuminate\Database\Migrations\Migrator::repositoryExists()
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:91

  9   Illuminate\Database\Console\Migrations\MigrateCommand::prepareDatabase()
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:63

  10  Illuminate\Database\Console\Migrations\MigrateCommand::handle()
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  11  call_user_func_array([])
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32

  12  Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:90

  13  Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Object(Closure))
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:34

  14  Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), [])
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Container/Container.php:576

  15  Illuminate\Container\Container::call()
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Console/Command.php:183

  16  Illuminate\Console\Command::execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /vagrant/SEV/vendor/symfony/console/Command/Command.php:255

  17  Symfony\Component\Console\Command\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Console/Command.php:170

  18  Illuminate\Console\Command::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /vagrant/SEV/vendor/symfony/console/Application.php:908

  19  Symfony\Component\Console\Application::doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /vagrant/SEV/vendor/symfony/console/Application.php:269

  20  Symfony\Component\Console\Application::doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /vagrant/SEV/vendor/symfony/console/Application.php:145

  21  Symfony\Component\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Console/Application.php:90

  22  Illuminate\Console\Application::run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /vagrant/SEV/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:122

  23  Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      /vagrant/SEV/artisan:37

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.