Php 在我的nerd_表中创建nerd时,我得到以下错误
这是我在create_users_table.php中的代码Php 在我的nerd_表中创建nerd时,我得到以下错误,php,laravel,Php,Laravel,这是我在create_users_table.php中的代码 public function up() { Schema::table('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $tab
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->integer('nerd_level');
});
}
Connection.php第647行中的QueryException:SQLSTATE[42S22]:列不可用
在“字段列表”中找到:1054未知列“nerd_level”(SQL:insert
进入用户
(名称
,电子邮件
,书呆子级别
,更新
,
在
处创建值(dasdasd,vincentnelissen@hotmail.nl1.
2017-03-3115:41:512017-03-3115:41:51)
当我试图编辑一个书呆子时,我得到了以下错误:
17afaeb4afd6b4276e6af6ff12921ab25d74a9cc.php行中出现错误异常
22:尝试获取非对象的属性(视图:
/var/www/vhosts/vincentspage.tk/httpdocs/Laravel/resources/views/nerds/edit.blade.php)
这是我在edit.blade.php中的代码:
<!DOCTYPE html>
<html>
<head>
<title>Look! I'm CRUDding</title>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap
/3.0.0 /css/bootstrap.min.css">
</head>
<body>
<div class="container">
<nav class="navbar navbar-inverse">
<div class="navbar-header">
<a class="navbar-brand" href="{{ URL::to('nerds') }}">Nerd Alert</a>
</div>
<ul class="nav navbar-nav">
<li><a href="{{ URL::to('nerds') }}">View All Nerds</a></li>
<li><a href="{{ URL::to('nerds/create') }}">Create a Nerd</a>
</ul>
</nav>
<h1>Edit {{ $nerd->name }}</h1>
<!-- if there are creation errors, they will show here -->
{{ HTML::ul($errors->all()) }}
{{ Form::model($nerd, array('route' => array('nerds.update',
$nerd->id), 'method' => 'PUT')) }}
<div class="form-group">
{{ Form::label('name', 'Name') }}
{{ Form::text('name', null, array('class' => 'form-control')) }}
</div>
<div class="form-group">
{{ Form::label('email', 'Email') }}
{{ Form::email('email', null, array('class' => 'form-control')) }}
</div>
<div class="form-group">
{{ Form::label('nerd_level', 'Nerd Level') }}
{{ Form::select('nerd_level', array('0' => 'Select a Level', '1' =>
'Sees Sunlight', '2' => 'Foosball Fanatic', '3' => 'Basement
Dweller'), null, array('class' => 'form-control')) }}
</div>
{{ Form::submit('Edit the Nerd!', array('class' => 'btn btn-primary')) }}
{{ Form::close() }}
</div>
</body>
</html>
这个错误对其他有类似问题的人是有益的,所以他们也知道应该在代码中修改什么。或者不要犯类似的错误,不管是谁先读的
有人能帮我吗
亲切问候,
Vincent使用
Schema::create
来创建新表,而不是Schema::table
。您正在使用Schema::table
,应用程序希望您尝试修改现有表
所以对于create\u users\u table
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->integer('nerd_level');
});
}
其他信息
Connection.php第647行中的QueryException:SQLSTATE[42S22]:列不可用
在“字段列表”中找到:1054未知列“nerd_level”(SQL:insert
进入用户(姓名、电子邮件、书呆子级别、更新时间、创建时间)值
(dasdad,vincentnelissen@hotmail.nl, 1, 2017-03-31 15:41:51,
2017-03-31 15:41:51)
此错误是因为您试图将记录保存到一个表中,而该表上没有nerd\u level
字段。因此,如果您已经创建了一个迁移,并且在添加字段时先运行迁移,然后再运行迁移,那么它将不起作用。因此,您需要在对文件进行任何更改之前回滚迁移,或者创建一个新迁移,只需将nerd_级别字段添加到现有表中
第一种方法
- 要回滚迁移,请运行以下命令,直到回滚create_users_表或声明步骤。见文件 php artisan迁移:回滚
- 带上所需的更改,添加以下行 $table->integer('nerd_level')
- 再次运行迁移 php artisan迁移
- 保留现有的create_users_表,不使用
$table->integer('nerd_level')代码>
- 创建一个新的单独迁移,只添加新列
此错误是因为,正如错误描述的,您试图访问null对象的属性,这意味着您需要首先让该用户(模型)存在于表中,以便能够访问其属性。能否显示NerdController.php上的第128行?另外,无论调用什么delete,都可以显示所有内容以查看该变量是如何变为null的吗?创建表后,请验证nerd_level作为列存在。您是在迁移之前还是之后将该列添加到迁移中的
descripe nerd_table
以验证该列是否存在。您能否向我们展示mysql中descripe users
或show create table users
的输出?如果这是新代码,您应该遵守Laravel的表名约定。它应该是nerd
,而不是nerd\u table
。调用user\u table
或tblUser
之类的东西很久以前就过时了。
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->integer('nerd_level');
});
}