2015-04-07 16 views
6

Sto lavorando a un progetto con SlimPHP ed Eloquent. Sto cercando di eseguire una query SQL RAW all'interno di un metodo di un modello, come questo:Utilizzare query Eloquent RAW con 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; 
} 

} 

Sto usando Capsule per l'avvio l'ORM.

Il codice di cui sopra mi da:

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

La documentazione è di molto aiuto in questo caso, si potrebbe far luce su questo?

grazie

risposta

8

Leggere il setup instructions on github strettamente e assicurarsi di seguire correttamente.


con la capsula si dovrebbe usare Illuminate\Database\Capsule\Manager o come DB "Facade".

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

Io di solito importare e definire un alias:

use Illuminate\Database\Capsule\Manager as DB; 

// ... 

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

Grazie per la risposta, con quello che sto avendo ora: Errore fatale: chiamata a una funzione membro getConnection() su un oggetto non in/vagrant/vendor/illumina/database/Illuminate/Database/Capsu le/Manager.php, Ha senso per te ?, evviva! –

+0

Hai seguito le istruzioni di installazione su [github] (https://github.com/illuminate/database)? – lukasgeiter

+0

È stato così, ho perso la capsula $-> setAsGlobal(); per poter accedere globalmente all'istanza della connessione, grazie mille! –

0

Inoltre, se avete bisogno di fare domanda prima, può essere utile per chiamare setAsGlobal() dopo bootEloquent() come questo

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