我可以单独使用Laravel的数据库层吗?

2022-08-30 14:35:18

一段时间以来,我一直在寻找使用php框架来工作。直到最近,我一直在编写程序风格,并且仍在尝试在oop世界/风格中找到自己的方式。我认为php框架会帮助我写出更好的代码,我很确定我会在不久的将来倾向于Laravel项目。

现在我需要一个可以在现有代码中使用的数据库层。我现在使用mysqli和准备好的语句,因为它对我来说很容易实现(以前使用MySQL)。

我一直在将 http://medoo.in 视为使用pdo包装器/类的“简单”方法,但是支持页面上缺乏活动,以及我将来正在使用Laravel的事实,使我想知道我现在是否可以将Laravel数据库层用于我现有的代码。

这可以完成吗,它是否有意义,或者我是否误解和混合了代码样式的概念?


答案 1

IMO 逐步过渡到 OOP 方法是绝对有效的。

对于您的问题:

是的,您可以单独使用 Eloquent。

这是 packagist 网站: https://packagist.org/packages/illuminate/database 添加到你的并运行 .现在,您需要引导Eloquent。(https://github.com/illuminate/database"illuminate/database": "5.0.*@dev"composer.jsoncomposer update)

以下内容是从存储库的自述文件中复制的:

使用说明

首先,创建一个新的“胶囊”管理器实例。Capsule旨在使配置库以在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();

注册胶囊实例后。您可以像这样使用它:

使用查询生成器

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

其他核心方法可以直接从 Capsule 访问,方式与从 DB 外观访问的方式相同:

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

使用架构生成器

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

使用雄辩的 ORM

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

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

有关使用此库提供的各种数据库工具的进一步文档,请参阅 Laravel 框架文档。


答案 2

巴斯蒂安的回答非常好。但还有一件事。如果没有事件库,它就无法工作。安装它;

composer require illuminate/events

你很高兴去


推荐