首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Builder.php行2405中的BadMethodCallException

Builder.php行2405中的BadMethodCallException
EN

Stack Overflow用户
提问于 2018-06-01 05:06:42
回答 2查看 241关注 0票数 1

我是Laravel的新手,我正在尝试创建一个基本的博客,用户可以在其中喜欢一篇文章。然而,我得到了以下错误:

BadMethodCallException第2405行:调用未定义的方法Builder.php \数据库\查询\生成器::likes()

下面是正在使用的代码:

PostController.php

    class PostController extends Controller
{
    public function getIndex()
    {
        $posts = Post::orderBy('created_at', 'desc')->paginate(2);
        return view('blog.index', ['posts' => $posts]);
    }

    public function getAdminIndex()
    {
       $posts = Post::all();
        return view('admin.index', ['posts' => $posts]);
    }

    public function getPost($id)
    {
        $post = Post::find($id);
        return view('blog.post', ['post' => $post]);
    }

    public function getLikePost($id)
    {
        $post = Post::find($id);
        $like = new Like();
        $post->likes()->save($like);
        return redirect()->back();
    }
}

Post.php

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content'];

    public function likes()
    {
        return $this->hasMany('App\Like');
    }
}

Like.php

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

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

post.blade.php

@extends('layouts.master')

@section('content')
    <div class="row">
        <div class="col-md-12">
            <p class="quote">{{ $post-> title}}</p>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <p>{{ count($post->likes) }} Likes | <a href="{{ route('blog.post.like', [ 'id' => $post->id ]) }}">Like</a></p>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <p>{{ $post->content }}</p>
        </div>
    </div>
@endsection

routes.php

Route::get('/', [
    'uses' => 'PostController@getIndex',
    'as' => 'blog.index'
]);

Route::get('post/{id}', [
    'uses' => 'PostController@getPost',
    'as' => 'blog.post'
]);

Route::get('post/{id}/like', [
    'uses' => 'PostController@getLikePost',
    'as' => 'blog.post.like'
]);

Route::get('about', function () {
    return view('other.about');
})->name('other.about');

Route::get('Register', function () {
    return view('auth.register');
})->name('auth.register');

Route::get('Login', function () {
    return view('auth.login');
})->name('auth.login');

我看不出问题出在likes方法中,也看不出在控制器中。由于Cloud 9 IDE的限制,我只能使用Laravel 5.2。

dd的输出($post):

Post {#182 ▼
  #fillable: array:2 [▼
    0 => "title"
    1 => "content"
  ]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  #perPage: 15
  +incrementing: true
  +timestamps: true
  #attributes: array:5 [▼
    "id" => 1
    "created_at" => "2018-05-31 20:19:50"
    "updated_at" => "2018-05-31 20:19:50"
    "title" => "Another test"
    "content" => "adsasjioh919789172y"
  ]
  #original: array:5 [▼
    "id" => 1
    "created_at" => "2018-05-31 20:19:50"
    "updated_at" => "2018-05-31 20:19:50"
    "title" => "Another test"
    "content" => "adsasjioh919789172y"
  ]
  #relations: []
  #hidden: []
  #visible: []
  #appends: []
  #guarded: array:1 [▼
    0 => "*"
  ]
  #dates: []
  #dateFormat: null
  #casts: []
  #touches: []
  #observables: []
  #with: []
  #morphClass: null
  +exists: true
  +wasRecentlyCreated: false
}
EN

回答 2

Stack Overflow用户

发布于 2018-06-01 06:49:18

我不确定您的likes表字段是什么?

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Like extends Model
{
     $fillable = ['post_id', 'user_id']; //YOU HAVE TO REPLACE THIS WITH YOUR FIELDS NAME
    public function post()
    {
        return $this->belongsTo('App\Post');
    }
}

然后您的post控制器如下所示:

 class PostController extends Controller

     public function getLikePost($id)
     {
        $post = Post::find($id);
        $like = new Like(['user_id' => Auth::user()->id]);
        $post->likes()->save($like);

        return redirect()->back();
     }
 }
票数 0
EN

Stack Overflow用户

发布于 2018-06-01 20:21:26

在程序中创建了多对多关系后,问题以某种方式自行解决了。

希望我有更多的细节,但我不知道这是怎么发生的。

非常感谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50632789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档