SQLSTATE[42S22]: Column not found: 1054 Unknown column 'title' in 'field list' in Laravel 5.4 在Laravel 5.4中,出现SQLSTATE[42S22]错误:找不到列: 1054 在字段列表中的未知列'title'。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'title' in 'field list' in Laravel 5.4 在Laravel 5.4中,出现SQLSTATE[42S22]错误:找不到列: 1054 在字段列表中的未知列'title'。
有人能帮我解决以下数据插入代码的问题吗?
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'title' in 'field list' (SQL: insert into gallery_categories (title, description, category_id, image, updated_at, created_at) values (Test title, Test details, 1, 1512370315.jpg, 2017-12-04 06:51:55, 2017-12-04 06:51:55))
我有两个模型。一个是GalleryModel,另一个是GalleryCategoryModel。当我使用dd($request->all())进行调试时,一切都正常。
注意:我是laravel的新手。
GalleryModel模型如下:
class GalleryModel extends Model
{
protected $table = 'galleries';
protected $primaryKey = 'id';
protected $fillable = ['title', 'description', 'image', 'category_id'];
}
这是GalleryCategoryModel模型:
class GalleryCategoryModel extends Model
{
protected $table = 'gallery_categories';
protected $primaryKey = 'id';
protected $fillable = ['name'];
}
我的控制器GalleriesController如下:
public function create()
{
$categories = GalleryCategoryModel::all();
return view('pages.backend.galleries.create')->withCategories($categories);
}
public function store(StoreGalleryRequest $request)
{
$gallery = new GalleryCategoryModel;
$gallery->title = $request->title;
$gallery->description = $request->description;
$gallery->category_id = $request->category_id;
if($request->hasFile('gallery_image')){
$image = $request->file('gallery_image');
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('assets/backend/images/' . $filename);
Image::make($image)->resize(500, 350)->save($location);
$gallery->image = $filename;
}
$gallery->save();
Session::flash('success', "数据插入成功");
return redirect()->route('galleries.index', $gallery->id);
}
这是我的HTML代码:
创建新相册
{!! Form::open(array('route' => 'galleries.store', 'data-parsley-validate' => '', 'files' => true)) !!}
{{ csrf_field() }}
@foreach($categories as $category)
@endforeach
{!! Form::close() !!}
原因:你的gallery_categories表中没有名为title的列。
解决方法:在gallery_categories表中添加名为title的列。
代码示例:
ALTER TABLE gallery_categories ADD title VARCHAR(255) NOT NULL;
注意:根据实际情况修改列的数据类型和长度。
在Laravel中使用迁移来添加列:
1. 创建一个新的迁移文件:
php artisan make:migration add_title_to_gallery_categories --table=gallery_categories
2. 在生成的迁移文件中,使用Schema类的addColumn方法来添加列:
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class AddTitleToGalleryCategories extends Migration { public function up() { Schema::table('gallery_categories', function (Blueprint $table) { $table->string('title')->after('id'); }); } public function down() { Schema::table('gallery_categories', function (Blueprint $table) { $table->dropColumn('title'); }); } }
3. 运行迁移:
php artisan migrate
这样就能解决SQLSTATE[42S22]: Column not found: 1054 Unknown column 'title' in 'field list'的问题了。