Php 生成器::同步不存在,Laravel中存在多对多错误

Php 生成器::同步不存在,Laravel中存在多对多错误,php,laravel,eloquent,many-to-many,laravel-5.6,Php,Laravel,Eloquent,Many To Many,Laravel 5.6,与此类似的问题 我得到以下信息: 方法\Database\Query\Builder::sync不存在。 namespace App; use Illuminate\Database\Eloquent\Model; class Tag extends Model { public function posts() { return $this->belongsToMany('App\Post',

与此类似的问题

我得到以下信息:

方法\Database\Query\Builder::sync不存在。

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Tag extends Model
    {
        public function posts()
        {
            return $this->belongsToMany('App\Post',  'post_tag');
        }
    }
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Post extends Model
    {
      public function user(){
        return $this->belongsTo('App\User');
      }

      public function category(){
        return $this->belongsTo('App\Category');
      }

      public function tags(){
        return $this->belongsTo('App\Tag', 'post_tag');
      }
    }
但是我的代码已经有了给定的解决方案

标签型号:
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Tag extends Model
    {
        public function posts()
        {
            return $this->belongsToMany('App\Post',  'post_tag');
        }
    }
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Post extends Model
    {
      public function user(){
        return $this->belongsTo('App\User');
      }

      public function category(){
        return $this->belongsTo('App\Category');
      }

      public function tags(){
        return $this->belongsTo('App\Tag', 'post_tag');
      }
    }
发布模型:
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Tag extends Model
    {
        public function posts()
        {
            return $this->belongsToMany('App\Post',  'post_tag');
        }
    }
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Post extends Model
    {
      public function user(){
        return $this->belongsTo('App\User');
      }

      public function category(){
        return $this->belongsTo('App\Category');
      }

      public function tags(){
        return $this->belongsTo('App\Tag', 'post_tag');
      }
    }
岗位控制员

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Tag extends Model
    {
        public function posts()
        {
            return $this->belongsToMany('App\Post',  'post_tag');
        }
    }
    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Post extends Model
    {
      public function user(){
        return $this->belongsTo('App\User');
      }

      public function category(){
        return $this->belongsTo('App\Category');
      }

      public function tags(){
        return $this->belongsTo('App\Tag', 'post_tag');
      }
    }
    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use Session;
    use Carbon\Carbon;

    use App\Category;
    use App\Post;
    use App\Tag;
    use App\User;


    class PostController extends Controller
    {
      public function __construct() { 
        $this->middleware('auth');
      }
...
      public function store(Request $request)
      {

        // Validate the data
        $this->validate($request, [
          'title'       => 'required|max:255',
          'category' => 'required|integer',
          'body'        => 'required'
        ]);

        $post = new Post;
        $post->title = $request->input('title');
        $post->body = $request->input('body');
        $post->slug = uniqid();
        $post->category_id = $request->category;
        $post->user_id = auth()->user()->id;
        $post->save();

        $post->slug = str_slug($request->input('title').' '.$post->id, '-');
        $post->save();

        $post->tags()->sync($request->tags, false);


        Session::flash('success', 'The blog post was successfully saved!');

        return redirect()->route('posts.show', $post->id);
      }
哪些是表单输入的正确值

如果我删除行
$post->tags()->sync($request->tags,false)它正确地写入数据库,如果我没有写入,但仍然运行它,它将正确地保存到
posts
表中,但不会将相关值保存到透视表中。

更改此项:

public function tags(){
    return $this->belongsTo('App\Tag', 'post_tag');
}
为此:

public function tags(){
    return $this->belongsToMany('App\Tag', 'post_tag');
}

在属于
关系的
上没有
->sync()
方法。从关系的另一面来看,你需要将它改为
属于婚姻。然后它就会起作用了,就是这样!我一遍又一遍地检查控制器,问题出在模型上!谢谢如果你想回答这个问题,我会把它标记为正确的。