2014-09-28 7 views
22

Seit einiger Zeit suche ich nach einem php Framework für meine Arbeit. Ich habe bis vor kurzem prozesstechnischen Stil geschrieben und versuche immer noch, mich in der OOP Welt/Stil zu orientieren. Ich dachte mir, dass ein PHP-Framework mir helfen würde, besseren Code zu schreiben und ich bin mir ziemlich sicher, dass ich mich in naher Zukunft dem Laravel-Projekt zuwenden werde.Kann ich die Laravel-Datenbank-Ebene eigenständig verwenden?

Im Moment brauche ich eine Datenbankschicht, die ich in meinem vorhandenen Code verwenden kann. Ich benutze mysqli jetzt mit vorbereiteten Anweisungen, da es für mich einfach war, es zu implementieren (vorher MySQL verwenden).

Ich habe http://medoo.in als eine "einfache" Möglichkeit, eine PDO-Wrapper/Klasse zu verwenden, aber der Mangel an Aktivität auf der Support-Seite, und die Tatsache, dass ich arbeite mit Laravel in der Zukunft, gemacht Ich frage mich, ob ich jetzt die Laravel-Datenbank-Ebene für meinen vorhandenen Code verwenden könnte.

Könnte dies gemacht werden und würde es Sinn machen oder bin ich Missverständnisse und Mischkonzepte von Code-Styling?

Antwort

31

IMO es ist absolut gültig, Schritt für Schritt zu einem OOP-Ansatz überzugehen.

Um Ihre Frage:

Ja, können Sie Eloquent Standalone nutzen. Hier

ist die packagist Website: https://packagist.org/packages/illuminate/database hinzufügen "illuminate/database": "5.0.*@dev" zu Ihrem composer.json und composer update läuft. Jetzt müssen Sie Eloquent starten. (https://github.com/illuminate/database)

Das Folgende ist aus der Readme-Repo kopiert:

Nutzungsanleitung

Erstellen Sie zunächst eine neue "Capsule" Manager-Instanz. Capsule zielt darauf ab, die Konfiguration der Bibliothek für die Verwendung außerhalb des Laravel-Frameworks so einfach wie möglich zu gestalten.

use Illuminate\Database\Capsule\Manager as Capsule; 

$capsule = new Capsule; 

$capsule->addConnection([ 
    'driver' => 'mysql', 
    'host'  => 'localhost', 
    'database' => 'database', 
    'username' => 'root', 
    'password' => 'password', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
]); 

// Set the event dispatcher used by Eloquent models... (optional) 
use Illuminate\Events\Dispatcher; 
use Illuminate\Container\Container; 
$capsule->setEventDispatcher(new Dispatcher(new Container)); 

// Set the cache manager instance used by connections... (optional) 
$capsule->setCacheManager(...); 

// Make this Capsule instance available globally via static methods... (optional) 
$capsule->setAsGlobal(); 

// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher()) 
$capsule->bootEloquent(); 

Sobald die Capsule-Instanz registriert wurde. Sie können es wie so verwenden:

über die Query Builder

$users = Capsule::table('users')->where('votes', '>', 100)->get(); 

Weitere Kern Methoden direkt aus der Kapsel in der gleichen Art und Weise sein, wie aus der DB Fassade zugegriffen:

$results = Capsule::select('select * from users where id = ?', array(1)); 

Verwendung das Schema Builder

Capsule::schema()->create('users', function($table) 
{ 
    $table->increments('id'); 
    $table->string('email')->unique(); 
    $table->timestamps(); 
}); 

Mit der eloquenten ORM

class User extends Illuminate\Database\Eloquent\Model {} 

$users = User::where('votes', '>', 1)->get(); 

Weitere Informationen zur Verwendung der verschiedenen Datenbankfunktionen, die diese Bibliothek bietet, finden Sie in der Laravel-Framework-Dokumentation.

+0

danke für die detaillierte Antwort .. Ich wollte wissen, ob wir einen Alias ​​zu Capsule :: schema() auf Schema gesetzt, so dass es auf die gleiche Weise wie in Laravel verwendet werden kann, dh Schema :: Model-> Aktion() oder Schema :: table() -> action()? – rolfk

+0

Sie könnten eine 'Schema'-Klasse erstellen und alle statischen Methodenaufrufe an' Capsule :: schema() -> $ method' mit '__callStatic' umleiten. –

Verwandte Themen