php - MySQL 错误 1054

标签 php mysql laravel-4 delete-row mysql-error-1054

我在尝试删除 Laravel 分页网格中的一行时遇到了这个烦人的小问题,几天前它运行良好,现在,每当我尝试删除任何记录时,我的所有网格都会遇到这个问题。这是错误的示例:

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('UserController@delete_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'=>'UserController@delete_user'))->before('auth');

Controller 用户 Controller

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
}

这几乎就是我所有的路由、 View 、模型和 Controller 的样子。

虽然我只是在删除记录时遇到了问题,但创建和更新工作正常。 直到几天前,当我最后一次删除记录时,删除才正常工作。 今天我在一个 View 中尝试了一些不同的东西,从创建到更新,然后当我试图删除它时,出现了之前引用的错误消息。

最佳答案

我找出了错误的原因。原来我有 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 中。

我没有通过使用外键约束来做我应该做的事情......我一开始没有设置它,因为它给了我语法错误。但是,如果有人能告诉我创建触发器的正确​​语法是什么,就像我显然试图创建的那样,我将不胜感激。

关于php - MySQL 错误 1054,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23647814/

相关文章:

mySQL 追加到列表

mysql - Datagridview 的展平表透视样式

php - Laravel 嵌套所有 json 响应

php - 在生产站点中删除laravel 4.1错误消息

IN 运算符的 PHP/Mysql 问题

php - foreach 循环中 undefined variable

mysql - stimulsoft 上的两个不同查询是否填充了变量

php - Laravel Artisan Migrate 不创建表

javascript - 带有 :hover pseudo-class 的 JQUERY .css()

php - 如何通过调用 codeigniter Controller 函数来更改配置项值?