2016-04-23 10 views
0

Um klarer mit meiner Frage, weiß ich, dass es yii\db\Command und bindValue() und bindParam() -Methoden gibt, aber ich bin auf der Suche nach Möglichkeit, ActiveRecord tun es selbst zu haben . Ich möchte nicht alle Abfragen manuell schreiben, sondern integrierte Funktionen verwenden.Erzwingen Yii 2 vorbereitete Anweisungen auf ActiveRecord Modell Speichern

class User extends \yii\db\ActiveRecord{ 
     public static function tableName(){ 
      return 'user'; 
     } 
     public function rules(){ ... } 
} 
... 

$user= new User(); 
$user->firstName='John'; 
$user->lastName='Doe'; 
$user->save(); 

Wenn ich SQL aussehen, die $ ausgeführt wird modell-> save() Ich sehe Ebene SQL-Anweisungen wie [yii\db\Command::execute] INSERT INTO user (firstName, lastName, ...) VALUES ('John' nach dem Aufruf, 'Doe', ...)

Gleiches gilt Aussagen wählen: [yii \ db \ Command :: query] SELECT * FROM Benutzer WHERE id =23

würde ich erwarten sollte, dass Rahmen vorbereitete Anweisungen erstellen und binden Parameter.T Hut würde schneller sein.

Gibt es eine Möglichkeit, erzwungene vorbereitete Anweisungen anstelle von normalem SQL zu erzwingen?

+0

Ich schätze Ihren Ansatz, aber Sie sollten dies unter github.com/yiisoft/yii2/ mit allen Core Yii-Entwicklern besprechen. Wenn Sie bei github.com diskutieren, erhöhen sich die Chancen, dass mehr Personen Ihre Vorschläge hören. – SohelAhmedM

Antwort

0

Für komplexe SQL-Anweisungen, die mehrmals ausgeführt werden müssen, wie in the docs angegeben, kann dies die Leistung verbessern. Bei SQL-Anweisungen mit Bindungsparametern wird diese Methode automatisch aufgerufen.

Oder Sie können QueryBuilder verwenden, um Abfrage zu generieren.

+0

Vielen Dank für Ihre Antwort. Ich weiß über diese Methoden, die Sie erwähnt haben, aber ich bin auf der Suche nach Möglichkeiten, Framework zu konfigurieren, um vorbereitete Anweisungen sofort zu verwenden (siehe meinen bearbeiteten Post) und keine expliziten Abfragen zu jeder Zeit zu machen. –

Verwandte Themen