Php 生成器::同步不存在,Laravel中存在多对多错误
与此类似的问题 我得到以下信息: 方法\Database\Query\Builder::sync不存在。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',
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()
方法。从关系的另一面来看,你需要将它改为属于婚姻。然后它就会起作用了,就是这样!我一遍又一遍地检查控制器,问题出在模型上!谢谢如果你想回答这个问题,我会把它标记为正确的。