web-dev-qa-db-fra.com

Puis-je utiliser la couche de base de données autonome de Laravel?

Depuis quelque temps, je cherche à utiliser un framework php pour mon travail. J'écrivais un style procédural jusqu'à récemment et j'essaie toujours de me frayer un chemin dans le monde du style. J'ai pensé qu'un framework php m'aiderait à écrire un meilleur code et je suis sûr que je vais me pencher vers le projet Laravel dans un proche avenir.

À l'heure actuelle, j'ai besoin d'une couche de base de données que je peux utiliser dans mon code existant. J'utilise actuellement mysqli avec les instructions préparées, car il était facile pour moi de l'implémenter (avec MySQL auparavant).

J'ai examiné http://medoo.in comme un moyen "facile" d'utiliser une classe/wrapper pdo, mais le manque d'activité sur la page de support et le fait que je travaille sur l'utilisation de Laravel à l'avenir, je me suis demandé si je pouvais maintenant utiliser la couche de base de données Laravel pour mon code existant.

Cela pourrait-il être fait et aurait-il un sens ou est-ce que je comprends mal et mélange les concepts de style de code?

26
sjosen

OMI, il est tout à fait correct de passer progressivement à une OOP.

A votre question:

Oui, vous pouvez utiliser Eloquent Standalone.

Voici le site packagiste: https://packagist.org/packages/illuminate/database Ajoutez "illuminate/database": "5.0.*@dev" à votre composer.json et exécutez composer update. Maintenant, vous devez initialiser Eloquent. . ( https://github.com/illuminate/database )

Ce qui suit est copié du fichier readme du référentiel:

Instructions d'utilisation

Commencez par créer une nouvelle instance de gestionnaire "Capsule". Capsule a pour but de simplifier au maximum la configuration de la bibliothèque pour une utilisation en dehors du cadre Laravel.

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();

Une fois l'instance Capsule enregistrée. Vous pouvez l'utiliser comme ceci:

Utilisation du générateur de requêtes

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

Vous pouvez accéder aux autres méthodes de base directement depuis Capsule de la même manière que depuis la façade DB:

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

Utilisation du générateur de schéma

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

Utilisation de l'ORM Éloquent

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

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

Pour plus de documentation sur l’utilisation des diverses bases de données fournies par cette bibliothèque, consultez la documentation du framework Laravel.

42
Bastian Hofmann

La réponse de Bastian est plutôt bonne. Mais il y a encore une chose. Cela ne peut pas fonctionner sans Event Lib. Pour l'installer

composer require illuminate/events

Tu es prêt

0
merkjs