Builder.php

时间:2016-05-22 13:18:30

标签: php laravel laravel-5 eloquent

我没有太多运气来解决以下错误

BadMethodCallException in Builder.php
Call to undefined method Illuminate\Database\Query\Builder::posts()

我正在进行的项目是社交网络的简单时间表。 虽然我在调用以下路线时遇到困难(创建帖子)

Route::group(['middleware' => ['web', 'auth']], function () {
Route::get('home', 'TimelineController@index');
Route::post('/posts', 'PostController@create');
});

POST返回上面指定的500错误。快速搜索"未实现的"方法posts()返回:

Searching 5094 files for "posts()"

C:\Users\Administrator\Code\instyle\app\User.php:
   16      ];
   17  
   18:     public function posts()
   19      {
   20          return $this->hasMany('Instyle\Post');

    C:\Users\Administrator\Code\instyle\app\Http\Controllers    \PostController.php:
   17          ]);
   18  
   19:         $createdPost = $request->user()->posts()->create([
   20              'body' => $request->body,
   21          ]);

由于我在查明此错误时遇到问题,因此我很乐意详细说明您需要的任何文件。 谢谢!

正如Khalid Dabjan所说,我修改了功能"创建"包括以下行" dd($ request-> user());"

结果是来自服务器的200响应,其中包含一个JSON,其中包含与登录用户相关的所有信息。

我的帖子控制器如下:

<?php

namespace Instyle\Http\Controllers;

use Illuminate\Http\Request;

use Instyle\Http\Requests;
use Instyle\Http\Controllers\Controller;
use Instyle\Post;

class PostController extends Controller
{
public function create(Request $request, Post $post)
{
    $this->validate($request, [
        'body' => 'required|max:600',
    ]);

    $createdPost = $request->user()->posts()->create([
        'body' => $request->body,
    ]);

    return response()->json($post->with('user')->find($createdPost->id));
}

}

1 个答案:

答案 0 :(得分:0)

我自己修复了错误,感谢@Khalid Dabjan在我的代码中戳。 我使用了错误的文件用于我的用户模型,出于某种原因我使用了两个而没有使用posts()方法的文件正在被应用。 enter image description here 我不知道为什么我使用两个User.php文件,但最好留下另一个问题,因为这个问题的答案现在已经清楚了: 我没有在正确的模型上实现功能帖子(),这就是我得到“功能不存在”错误的原因。