2015-04-07 8 views
6

Pracuję nad projektem z SlimPHP i Eloquent. Próbuję uruchomić kwerendę SQL RAW wewnątrz metody modelu, podobnie jak to:Używanie wymownych zapytań RAW ze Slim 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; 
} 

} 

Używam Capsule do bootstrap ORM.

Powyższy kod daje mi:

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

Dokumentacja jest bardzo pomocne w tym przypadku, można rzucić trochę światła na to?

dzięki

Odpowiedz

8

Przeczytaj setup instructions on github uważnie i upewnij się, wykonaj je poprawnie.


Z Capsule należy użyć Illuminate\Database\Capsule\Manager lub DB "Fasada".

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

zazwyczaj importować i określić alias:

use Illuminate\Database\Capsule\Manager as DB; 

// ... 

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

Dziękuję za odpowiedź, z tym, że mam teraz: Błąd krytyczny: wywołanie funkcji członkowskiej getConnection() na obiekcie nie będącym obiektem w/vagrant/dostawcy/oświetleniu/bazie danych/Illuminate/Database/Capsu le/Manager.php, Czy to ma dla ciebie sens? –

+0

Czy postępowałeś zgodnie z instrukcją instalacji na [github] (https://github.com/intl/pl/atabase)? – lukasgeiter

+0

To było to, brakowało mi $ capsule-> setAsGlobal(); aby uzyskać dostęp do instancji połączenia na całym świecie, dziękuję bardzo! –

0

Plus jeśli trzeba zrobić kwerendę surowego, może pomóc zadzwonić setAsGlobal() po bootEloquent() tak

$capsule->addConnection($sqliteDb); 
$capsule->bootEloquent(); 
$capsule->setAsGlobal(); // <--- this