2017-02-24 3 views
0
gefunden

ich Migration mein Projekt von yii1 versuchen zu yii2. Ich habe einige Modellfunktion ich machen, wenn ich noch Yii1 verwenden, unter anderem ist id uniq Funktion, wie diese erzeugen:PHP Fatal Error ' yii base Error ' mit Nachricht ' Klasse ' Modellname ' nicht

public static function generateID($tableName, $modelName) { 
     $dateNow = date("Ymd"); 
     $checkLastID = $modelName::findBySql(
      "SELECT SUBSTR(MAX(id),-4) AS id FROM $tableName WHERE id LIKE '%$dateNow%'" 
     )->one(); 
     $lastNumber = (int)substr($checkLastID["id"], 8,4); 

     if($checkLastID["id"] == '') { 
      $id = $dateNow.sprintf("%04s", 1);   
     } else { 
      $lastNumber = $checkLastID["id"]; 
      $lastNumber++; 
      if($lastNumber < 10) $id = $dateNow.sprintf("%04s", $lastNumber); 
      elseif($lastNumber < 100) $id = $dateNow.sprintf("%04s", $lastNumber); 
      elseif($lastNumber < 1000) $id = $dateNow.sprintf("%04s", $lastNumber); 
      elseif($lastNumber < 10000) $id = $dateNow.sprintf("%04s", $lastNumber); 
      else $id = $lastNumber; 
     } 
     return $id; 
    } 

und ich Zugriff auf die Funktion von der Steuerung wie folgt aus:

$model->id = Helper::generateID('table_name', 'ModelName'); 

und als, zeigen Fehler, wenn ich will Daten erstellen:

<pre>PHP Fatal Error &#039;yii\base\ErrorException&#039; with message &#039;Class &#039;ModelName&#039; not found&#039; 

in C:\xampp\htdocs\kampunginggrispare.com\common\models\Helper.php:61 

Stack trace: 
#0 [internal function]: yii\base\ErrorHandler-&gt;handleFatalError() 
#1 {main}</pre> 

Aber, wenn ich

ändern

sein:

$checkLastID = ModelName::findBySql("SELECT SUBSTR(MAX(id),-4) AS id FROM table_name WHERE id LIKE '%$dateNow%'")->one(); 

Es ist Arbeit, aber funktioniert nicht, wenn ich Parameter verwenden, wie Funktion über

In Yii1, nicht Fehler, aber Fehler in Yii2

Jeder Körper kann mir helfen ??

Dank ...

+0

Noch Fehler Mr. RiggsFolly –

Antwort

1

Versuchen Sie, $ ModelName vor der Verwendung in der Klasse Helper zu laden. Sie können entweder

... 

$dateNow = date("Ymd"); 
$className = '\common\models\\' . $modelName; // replace this with your model's namespace 
$checkLastID = $className::findBySql(
    "SELECT SUBSTR(MAX(id),-4) AS id FROM $tableName WHERE id LIKE '%$dateNow%'" 
)->one(); 

.... 

Oder einfach setzen Sie Ihre Helfer im gleichen Namensraum mit dem $ModelName (weniger empfohlen). Ich verstehe immer noch nicht den Zweck Ihrer Helper Klasse.

+0

wow ... diese Arbeit Herr Prabowo Murti Helper-Klasse ist eine Sammlung von Funktionen, die ich für spezifische Aufgabe gemacht habe, wie zum Beispiel einzigartige Code usw. generieren. –

+0

Großartig. Ich empfehle Ihnen, über 'Yii :: $ app-> db-> getLastInsertID();' zu lesen, um zuletzt eingefügte ID zu bekommen. Wenn Sie feststellen, dass meine Antwort Ihnen hilft, bitte markieren Sie es als die angenommene Antwort. Terima kasih :) –

+0

Wah sadar saya kalau mas Prabowo orang Indo .... wkwkkwk okay, habe getan .... –

Verwandte Themen