我在尝试删除 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/