2017-02-24 37 views
0

我試圖遷移我的項目從yii1到yii2。 我有些借鑑作用我做的時候我還在用Yii1,是在其他的生成ID uniq的功能的,就像這樣:PHP致命錯誤'警予基地 ErrorException '有消息' '類型號名稱'找不到

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; 
    } 

,我從控制器訪問功能是這樣的:

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

比,顯示錯誤,當我想創建數據:

<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> 

但是,如果我改變

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

是:

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

它的工作,但是當我使用參數之類的函數以上

在Yii1,沒有錯誤是不行的,但錯誤Yii2

任何機構可以幫我 ??

謝謝...

+0

仍然錯誤Mr. RiggsFolly –

回答

1

嘗試加載$ ModelName,然後在Helper類中使用它。您可以

... 

$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(); 

.... 

或者乾脆把你的助手在同一個命名空間與$ModelName(較少推薦)。我仍然不明白你的Helper課程的目的。

+0

哇...這項工作先生Prabowo Murti 助手類是我爲特定任務,如生成獨特的代碼等功能的集合。 –

+0

偉大的。我建議你閱讀'Yii :: $ app-> db-> getLastInsertID();'來獲取最後插入的ID。如果您發現我的答案可以幫助您,請將其標記爲已接受的答案。 Terima kasih :) –

+0

Wah g sadar saya kalau mas Prabowo orang Indo .... wkwkkwk 好的,已經完成.... –

相關問題