2014-05-14 60 views
2

我有一個小小的討厭問題,試圖刪除Laravel中的一個分頁網格中的一行,它在幾天前工作的很好,現在,我在所有的網格中遇到這個問題,只要我嘗試刪除任何記錄。下面是錯誤的一個例子:Laravel MySQL錯誤1054

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.id' 
in 'where clause' (SQL: delete from `users` where `id` = 9) 

現在我的實際代碼:

遷移了()

Schema::create('users', function(Blueprint $table){ 
    $table->increments('id'); 
    $table->string('username', 50); 
    $table->string('password', 50); 
    $table->string('email', 50); 
    $table->tinyInteger('roles_id'); 
    $table->string('remember_token', 255); 
    $table->timestamps(); 
}); 

查看

{{ Form::open(array('action' => array('[email protected]_user'), 'method' => 'delete')) }} 
{{ Form::submit('Delete', array('class'=>'btn btn-danger', 'title'=>'Delete', 'style'=>'width:70px;height:35px;margin-left:100px;')) }} 
{{ Form::hidden('id','',array('id'=>'identifier')) }} 
{{ Form::close() }} 

路線

Route::delete('users/delete', array('uses'=>'[email protected]_user'))->before('auth'); 

控制器UserController的

public function delete_destroy(){ 
    $id = Input::get('id'); 
    User::findOrFail($id)->delete(); 
    return Redirect::route('users'); 
} 

型號用戶

class User extends Eloquent implements UserInterface, RemindableInterface { 

    protected $table = 'users'; 

    protected $hidden = array('password'); 

    protected $fillable = array('username', 'email', 'password', 'roles_id'); 
    public static $accessible = array('username', 'email', 'roles_id'); 

    private static function rules(){ 
     return array(
        'username' => 'required|min:6|max:20|unique:users,username,"'.Input::get('id').'"', 
        'password' => 'required|min:8', 
        'email' => 'required|email', 
        'roles_id' => 'required|numeric|min:1', 
        ); 
    } 
//Bunch of other native functions 
} 

這幾乎是我所有的路線,視圖,模型和控制器的外觀。

我只是在刪除記錄時遇到問題,但創建和更新工作正常。 刪除工作正常,直到幾天前,當我最後刪除了一條記錄。 今天我在視圖中嘗試了一些不同的東西,從創建到更新,然後當我試圖刪除它時,先前引用的錯誤消息出現了。

回答

0

我找出了錯誤的原因。原來我有4張桌子的觸發器,就像這樣。下面的例子僅僅是用戶表,但:

CREATE TRIGGER `delete_privileges` AFTER DELETE ON `users` FOR EACH ROW 
BEGIN 
DELETE FROM users_controllers_actions 
     WHERE users_controllers_actions.users_id=users.id; 
END; 

想這是不正確的語法......也許DELETED.id或OLD.id ......我不習慣在MySQL中使用觸發器,但在SQL Server中。

我沒有做我應該通過使用外鍵約束......我沒有設置,因爲它給了我語法錯誤。然而,如果任何人都可以告訴我什麼是正確的語法來創建觸發器,比如我正在嘗試創建的觸發器,那麼我會很感激。