SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'类别'(SQL:更新`articles`设置`updated_at`)

时间:2017-12-21 08:43:50

标签: laravel

我有两张桌子

  • 文章
  • 类别

我有一个ArticleController。我想编辑表单。但它会出错。

  

SQLSTATE [42S22]:未找到列:1054未知列'类别'   '字段列表'(SQL:更新articles设置updated_at = 2017-12-21   11:50:12,category = 1其中id = 1)

ArticleController.php

public function update(ArticleRequest $request, Article $article)
    {
        $file = $request->file('images');
        $inputs = $request->all();
        $article->categories()->sync(request('category'));

        if($file) {
            $inputs['images'] = $this->uploadImages($request->file('images'));
        } else {
            $inputs['images'] = $article->images;
            $inputs['images']['thumb'] = $inputs['imagesThumb'];

        }

        unset($inputs['imagesThumb']);
        $article->update($inputs);

        return redirect(route('articles.index'));
    }

此错误发生在以下行。

  

$物品─>更新($输入);

edit.blade.php

<select name="category[]" class="form-control" id="category" title=" Select your a categories..." multiple>
      @foreach( $categories as $id => $name )
               <option value="{{ $id }}" {{ in_array($id , $article->categories()->pluck('id')->toArray()) ? 'selected' : '' }}>{{ $name }}</option>
      @endforeach
</select>

分类

class Category extends Model
{
    protected $fillable = ['name', 'slug'];

    public function articles()
    {
        return $this->belongsToMany(Article::class);
    }
}

public function categories()
    {
        return $this->belongsToMany(Category::class);
    }

4 个答案:

答案 0 :(得分:0)

这意味着您的category表格中没有articles列。因此,请确保您拥有一个或使用其他列名称。

同样,从输入中您获得了多个类别,因此使用此输入更新文章似乎不正确。

答案 1 :(得分:0)

您的文章表没有名为category的列。您可以发布文章表格迁移吗

答案 2 :(得分:0)

注意这个

<select name="category[]" 

也许你的意思是

<select name="category_id[]" 

答案 3 :(得分:0)

因为您的文章模型上没有$ fillable数组,因此请求中的其他值会泄漏到批量分配。