2015-04-07 3 views
6

Ich arbeite an einem Projekt mit SlimPHP und Eloquent. Ich versuche, eine RAW-SQL-Abfrage innerhalb eines Modells Methode auszuführen, wie folgt aus:Verwenden Sie RAW Eloquent Abfragen mit 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; 
} 

} 

I Capsule bin mit dem ORM Bootstrap.

Der obige Code gibt mir:

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

Dokumentation ist sehr helfen in diesem Fall Sie etwas Licht auf diesem verschütten könnte?

dank

Antwort

8

Lesen Sie die setup instructions on github eng und stellen Sie sicher, dass Sie sie richtig folgen.


Mit Kapsel sollten Sie Illuminate\Database\Capsule\Manager oder als DB "Fassade" verwenden.

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

ich importieren es in der Regel, und definieren einen Alias:

use Illuminate\Database\Capsule\Manager as DB; 

// ... 

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

Danke für die Antwort, mit der ich jetzt habe: Fataler Fehler: Aufruf einer Memberfunktion getConnection() auf einem Nicht-Objekt in/vagrant/vendor/illuminate/database/Illuminate/Datenbank/Capsu le/Manager.php, Macht es einen Sinn für Sie ?, Prost! –

+0

Haben Sie die Installationsanweisungen auf [github] (https://github.com/illuminate/database) befolgt? – lukasgeiter

+0

Das war es, ich verpasste die $ Kapsel-> setAsGlobal(); um global auf die Verbindungsinstanz zugreifen zu können, vielen Dank! –

0

Plus, wenn Sie rohe Abfrage tun müssen, kann es helfen setAsGlobal() nach bootEloquent() wie folgt

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