2017-05-10 3 views
0

Nicht sicher, wenn möglich, aber was ich versuche, ist, eine Abfragezeichenfolge über eine Get-Anforderung an meinen Controller zu übergeben. Von hier bekomme ich den Abfragezeichenfolgenwert mit $ _GET ['name']. Was ich dann tun möchte, ist, diesen GET-Wert zu verwenden und ihn als den Namen der Methode anzuhängen, die ich an mein Modell übergeben werde, um die Daten zurückzugeben, die ich brauche.Codeigniter - Anfügen von Variablennamen an einen Methodennamen zur Ausführung Modellfunktion

Dies liegt daran, dass mehrere Aktionen unterschiedliche Abfragezeichenfolgenwerte an denselben Controller übergeben, aber dann den Wert verwenden, um die Daten von verschiedenen Funktionen in meinem Modell abzurufen.

z.B.

-Controller

class ControllerName extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
     $this->load->model('my_model'); 
    } 

    public function index() { 
     $queryName = $_GET['query_string'] 
     // e.g. $queryName = 'customer' 

     //Use the query string and append to method to pass to Model function 
     $result = $this->my_model->$queryName._get_query(); //??? 

     //e.g. $result = $this->my_model->customer_get_query(); 
    } 
} 

My_model

class My_model extends CI_Model { 

    function __construct() { 
     parent::__construct(); 
     $this->load->database(); 
    } 

    function customer_get_query() { 
     //...run database query and return result 
    } 
} 

Irgendwelche Gedanken?

+0

Sie $ this- versuchen> my_model -> {$ queryname .'_ get_query '}(); – jagad89

+0

Tolles Dankeschön, hat ein Vergnügen gemacht! – swood

Antwort

0

Die übliche php sollte gut funktionieren:

$result = call_user_func([$this->my_model, $queryName.'_get_query']); 
+0

Auch so funktioniert danke – swood

Verwandte Themen