猿问

如何从 laravel 中的另一个控制器获取信息

我想使用另一个控制器保存信息以将其存储在数据库中。

在我的情况下,有两个控制器:


PostingsController

评论控制器

我可以使用 CommentsController 为评论创建创建函数,但我无法从 CommentsController 将 post_id 保存在数据库中。我想使用 PostingsController 保存 post_id,因为它具有:


//if user did not fill the form properly

    //error messages will popup

    $this->validate($request, [

        'comment' => 'required',

    ]);


    //if user filled the form properly

    //store the form

    $comment = new Comment();

    //for connecting both user and comment

    $comment->user_id = Auth::id();


    //to store comment

    $comment->post_id = //I want to save post_id from PostingsController

    //to store comment

    $comment->comment = $request->input('comment');

    //save all user input

    $comment->save();

    dd($comment);

我设置了 $comment = Posting::id();,但它不起作用。错误是:


BadMethodCallException

Call to undefined method App\Models\Posting::id()


湖上湖
浏览 137回答 2
2回答

慕桂英4014372

遵循关注点分离的原则,您可以将逻辑移动到另一个模块中,例如服务。我建议添加一个新文件夹app/services并为每个需要实现的逻辑添加一个服务类,例如。app/services/AddCommentToPostService.php.这也将使系统的测试更容易。

阿波罗的战车

您可以使用 app 方法在 laravel app('App\Http\Controllers\ControllerName')->functionName() 中调用另一个控制器的控制器方法;
随时随地看视频慕课网APP
我要回答