2014-09-28 43 views
22

Đối với một số thời gian bây giờ tôi đã được hướng tới bằng cách sử dụng một khuôn khổ php cho công việc của tôi. Tôi đã viết phong cách thủ tục cho đến gần đây và vẫn đang cố gắng tìm đường của tôi xung quanh thế giới/phong cách oop. Tôi nhận thấy rằng một khuôn khổ php sẽ giúp tôi viết mã tốt hơn và tôi chắc chắn rằng tôi sẽ hướng tới dự án Laravel trong một tương lai gần.Tôi có thể sử dụng lớp cơ sở dữ liệu của Laravel độc lập không?

Hiện tại tôi đang cần một lớp cơ sở dữ liệu mà tôi có thể sử dụng trong mã hiện tại của mình. Tôi sử dụng mysqli với các câu lệnh chuẩn bị ngay bây giờ, vì nó đã được dễ dàng cho tôi để thực hiện (sử dụng MySQL trước).

Tôi đã xem http://medoo.in là một cách dễ dàng để sử dụng trình bao bọc/lớp pdo nhưng thiếu hoạt động trên trang hỗ trợ và thực tế là tôi đang sử dụng Laravel trong tương lai, tôi tự hỏi liệu tôi có thể sử dụng lớp cơ sở dữ liệu Laravel bây giờ cho mã hiện tại của tôi không.

Điều này có thể được thực hiện và nó có ý nghĩa hay tôi hiểu nhầm và trộn các khái niệm về tạo kiểu mã?

Trả lời

31

IMO hoàn toàn hợp lệ để chuyển sang phương pháp tiếp cận OOP từng bước.

Cho câu hỏi của bạn:

Có, bạn có thể sử dụng độc lập Eloquent.

Đây là trang web đóng gói: https://packagist.org/packages/illuminate/database Thêm "illuminate/database": "5.0.*@dev" vào số composer.json và chạy composer update. Bây giờ bạn sẽ cần khởi động Eloquent. (https://github.com/illuminate/database)

Sau đây là sao chép từ readme của repo:

Hướng dẫn Cách sử dụng

Đầu tiên, tạo một "Capsule" dụ người quản lý mới. Capsule nhằm mục đích cấu hình thư viện để sử dụng bên ngoài khung công tác Laravel dễ dàng nhất có thể.

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

Khi phiên bản Capsule đã được đăng ký. Bạn có thể sử dụng nó như vậy:

Sử dụng Query Builder

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

phương pháp cốt lõi khác có thể được truy cập trực tiếp từ Capsule theo cách tương tự, kể từ DB mặt tiền:

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

Sử dụng Trình tạo lược đồ

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

Sử dụng Eloquent ORM

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

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

Để biết thêm tài liệu về cách sử dụng các cơ sở dữ liệu khác nhau mà thư viện này cung cấp, hãy tham khảo tài liệu khuôn khổ Laravel.

+0

cảm ơn câu trả lời chi tiết .. tôi muốn biết liệu chúng ta có thể tạo bí danh cho Capsule :: schema() được đặt thành Schema hay không, vì vậy nó có thể được sử dụng giống như trong Laravel tức là Schema :: Model-> action() hoặc Schema :: table() -> action()? – rolfk

+0

Bạn có thể tạo một lớp 'Schema' và chuyển hướng tất cả các lời gọi phương thức tĩnh tới' Capsule :: schema() -> $ method' với '__callStatic'. –

Các vấn đề liên quan