Skip to content

clusterpoint/laravel-clusterpoint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clusterpoint 4.x PHP Client API - Laravel Package

Latest Stable Version Total Downloads Latest Unstable Version License

Official Documentation

Documentation for the API can be found on the Clusterpoint website.

Install

  1. Install the package.
    composer require clusterpoint/laravel-clusterpoint
  2. Register Service Provider in your config/app.php file.
    Clusterpoint\ClusterpointServiceProvider::class
  3. Publish config file.
    php artisan vendor:publish --provider="Clusterpoint\ClusterpointServiceProvider"
  4. Edit config – The main config file path is
    config/clusterpoint.php
    however we recommend to add your credentials to your .env file in laravel project root directory.
CP_HOST=https://api-eu.clusterpoint.com/v4  
CP_ID=42  
[email protected]  
CP_PASSWORD=mypassword  

Usage examples

##Client Usage Example Here you can see standart Laravel Controller that uses our service.

<?php

namespace App\Http\Controllers;

use Clusterpoint\Client; // use our package.

class ExampleController extends Controller
{
    public function getIndex() {
		
		$cp = new Client(); // by defualt uses 'default' connection name from ./config/clusterpoint.php
		
		// Set the collection to work with to initalize the query builder for it.
		$collection = $cp->database("database.collection");

		// Build your query
		$results = $collection->where('color', 'red')
			->where('availability', true)
			->limit(5)
			->groupBy('category')
			->orderBy('price')
			->select(['name', 'color', 'price', 'category'])
			->get();
			
		// Access your results
		return $results[0]->price;
	}
}

##Model Usage Example First create your model in app folder:

<?php

namespace App;

use Clusterpoint\Model;

class Example extends Model
{
	protected $db = "database.collection"; // set your databse and collection names
	//protected $primaryKey = "custom_id"; // If you want to define specific specific primary key, default = _id
}

Now you can use model inside the controller.

<?php

namespace App\Http\Controllers;

use App\Example; // use your model.

class ExampleController extends Controller
{	
    public function getIndex() {
		$example = Example::where('price', '>', 200)->first();
		
		$example->price = 300;
		$example->save();
		
		return view('example', compact('example'));
	}
}

##Route Model Binding Example We will use model created above to show this example, first bind your model in app/Http/routes.php file like this:

<?php

Route::model('example', 'App\Example');
Route::get('/examples/{example}', 'ExampleController@getIndex');

Now if you pass the primary key value in your url like myweb.dev/examples/42 you can access the document already inside your controller like this.

<?php

namespace App\Http\Controllers;

use App\Example;

class ExampleController extends Controller
{
	public function getIndex($example) {
		$id = $example->_id; // value is 42
		$name = $example->name;
		$price = $example->price;
		return view('example', compact('name','price'));
	}
}

##Multiple connections Example You can set multiple connections and use what you needed in the Model.

First add a connection setting array in the main config file config/clusterpoint.php. For example a connection named "test"

<?php

return array(
  "default" => array(
    'host' => env('CP_HOST', 'https://api-eu.clusterpoint.com/v4'),
    'account_id' => env('CP_ID', ''),
    'username' => env('CP_USERNAME', ''),
    'password' => env('CP_PASSWORD', ''),
  ),
  "test" => array(
    'host' => env('CP1_HOST', 'https://api-eu.clusterpoint.com/v4'),
    'account_id' => env('CP1_ID', ''),
    'username' => env('CP1_USERNAME', ''),
    'password' => env('CP1_PASSWORD', ''),
  )
);

However we recommend you to add your credentials to your .env file in the laravel project root directory.

CP1_HOST=https://api-eu.clusterpoint.com/v4  
CP1_ID=42  
[email protected]  
CP1_PASSWORD=mypassword  

Now You can use the connection in Your Model:

<?php

namespace App;

use Clusterpoint\Model;

class Example extends Model
{
	protected $connection = "test";
}

Support, Feature Requests & Bug Reports

License

Clusterpoint 4.0 PHP Client API - Laravel Package is open-sourced software licensed under the MIT license