2017-11-14 4 views
0

Ich Probleme, eloquent Methoden als Parameter zu bestehen.Pass eloquent Methode als Parameter

Hier ist meine Methode,

public function getPayment($paymentId, $eloquentMethod) 
{ 
    if (!empty($orderId)) { 
     return DB::connection('my_db')->table('payment')->{$eloquentMethod}(); 
    } 
    return null; 
} 

Es funktioniert einwandfrei, wenn ich $this->getPayment('1', 'get')

passieren Aber es funktioniert nicht, wenn ich $this->getPayment('1', 'pluck("payment_id")') passieren

Vielen Dank im Voraus.

+0

Meinen Sie '$ eloquentMethod =‚get''? – tyteen4a03

+0

Versuchen Sie: '$ eloquentMethod = 'get'' und verwenden Sie dann' return DB :: connection (' my_db ') -> Tabelle (' Zahlung ') -> {$ eloquentMethod}(); ' –

+0

@ tyte4a3a ja, aber mit Parameter . –

Antwort

2

Wie viel Möglichkeiten haben Sie für $eloquentMethod? Wenn viele Möglichkeiten wie "get", "erster" .. etc, dann können Sie machen:

public function getPayment($paymentId, $eloquentMethod = 'get()') 
{ 
    if (!empty($orderId)) { 
     switch ($eloquentMethod) { 
      case "get": 
       return DB::connection('my_db')->table('payment')->get(); 
       break; 
      case "first": 
       return DB::connection('my_db')->table('payment')->first(); 
       break; 
      case default: 
       return null; 
     } 
    } 
}