2017-08-18 70 views
0

我想delete來刪除數據庫中的數據,但該表沒有主鍵Yii2刪除()無主鍵

下面的代碼

Table::findOne(['name' => 'Andrew', 'Age' => '25'])->delete(); 

然後,它顯示了錯誤

app\models\Table does not have a primary key. You should either define a primary key for the corresponding table or override the primaryKey() method. 

幫我找到沒有主鍵的方法。

感謝

+0

您是否嘗試了錯誤消息中的兩條建議之一? – STLDeveloper

回答

1

你可以重寫primaryKey()模型方法,所以錯誤應該消失。

應用程序\型號\表添加這個方法(我認爲主鍵應該以 '名' 和 '年齡' 組成):

public static function primaryKey() 
{ 
    return [ 
    'name', 
    'Age', 
    ]; 
} 
+0

謝謝..它的工作原理..但是,我也可以使用這種方法更新數據嗎? –

+0

,但是您應該直接在db表中聲明主鍵。 –

1

Inseatd使用ActiveRecord的 你可以使用delete命令與條件

$myCommand = Yii::$app->db->createCommand() 
       ->delete('your_table', 'name = "Andrew" AND Age = 25 '); 

$myCommand->execute(); 

,如果你想刪除所有符合條件的行,你可以使用

deleteAll(...) ; 
0

試試這個:

$data=Table::find()->where(['name' => 'Andrew', 'Age' => '25'])->one(); 
$data->delete();