我在控制台中遇到了一个非常奇怪的错误,即使我在数据库中成功提交了数据,我仍然收到500错误,提示:
POST http://127.0.0.1:8000/posts 500 (Internal Server Error)
。
这种感觉是不合理的,因为这似乎是不合逻辑的。
我在做什么错了?
这是职位控制者:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
class PostController extends Controller
{
public function create(Request $request, Post $post) {
// create post
$createdPost = $request->user()->posts()->create([
'body' => $request->body
]);
// return response
return response()->json($post->with('user')->find($createdPost->id));
}
}
以下是路线:
<?php
Auth::routes();
Route::group(['middleware' => ['auth']], function () {
Route::get('/', 'TimelineController@index');
Route::post('/posts', 'PostController@create');
});
答案 0 :(得分:2)
我认为该错误位于您的回复行中。您在单个模型对象而不是Model class,Collection object或Relationship object中调用find()
方法。检查信号线:
class PostController extends Controller
{
public function create(Request $request, Post $post) {
// ...
return response()->json($post->with('user')->find($createdPost->id)); // <----
}
}
尝试以下方法:
return response()->json(Post::with('user')->find($createdPost->id));
// or even easier:
return response()->json($createdPost->load('user'));