2015-04-07 18 views
6

Tôi đang làm việc trên một dự án với SlimPHP và Eloquent. Tôi cố gắng để chạy một truy vấn SQL RAW trong phương pháp của Model, như thế này:Sử dụng Truy vấn Nguyên gốc Eloquent với PHP PHP

/models/Form.php

<?php 
namespace models; 

class Form extends \Illuminate\Database\Eloquent\Model { 

protected $table = 'forms'; 

public function getResponses($form_id) 
{ 
    // HERE 
    $select = \Illuminate\Support\Facades\DB::select('select 1'); 
    return 1; 
} 

} 

Tôi đang sử dụng Capsule để bootstrap ORM.

Đoạn mã trên mang lại cho tôi:

Fatal error: Call to a member function select() on a non-object in /vagrant/vendor/illuminate/support/Illuminate/Support/Facades/Facade.php on line 208

Tài liệu là rất giúp đỡ trong trường hợp này, bạn có thể làm sáng tỏ về điều này?

cảm ơn

Trả lời

8

Đọc kỹ setup instructions on github và đảm bảo bạn tuân thủ chính xác.


Với Capsule, bạn nên sử dụng Illuminate\Database\Capsule\Manager hoặc làm DB "Mặt tiền".

$select = \Illuminate\Database\Capsule\Manager::select('select 1'); 

tôi thường nhập nó và xác định một bí danh:

use Illuminate\Database\Capsule\Manager as DB; 

// ... 

$select = DB::select('select 1'); 
+0

Cảm ơn bạn đã trả lời, với điều đó tôi hiện đang có: Lỗi nghiêm trọng: Gọi tới hàm thành viên getConnection() trên một đối tượng không trong/vagrant/vendor/illuminate/database/Illuminate/Database/Capsu le/Manager.php, Nó có ý nghĩa gì với bạn không ?, chúc mừng! –

+0

Bạn có làm theo hướng dẫn cài đặt trên [github] (https://github.com/illuminate/database) không? – lukasgeiter

+0

Đó là nó, tôi đã bỏ lỡ $ capsule-> setAsGlobal(); để có thể truy cập vào cá thể kết nối trên toàn cầu, cảm ơn rất nhiều! –

0

Plus nếu bạn cần làm truy vấn liệu, nó có thể giúp gọi setAsGlobal() sau khi bootEloquent() như thế này

$capsule->addConnection($sqliteDb); 
$capsule->bootEloquent(); 
$capsule->setAsGlobal(); // <--- this 
Các vấn đề liên quan