doumindang2416 2016-11-16 21:48
浏览 201
已采纳

Laravel将对象从视图传递到控制器

Looking for best practices, given these 3 tables:

Task (id, title, description) User (id, name) User_task (user_id, task_id)

My class/Object User has a function addToCompletedTasks(Task task) to add a task to his list of completed task (that adds the task into the table User_task).

I'm looking for best practice to send my completed task FROM my view TO my controller. Right now I'm sending an ID but I'm wondering if it's possible to send the object so I don't have to instantiate the task in my controller to add it to the completedtasks list.

public function insertCompletedTask(Request $request)
{
        $task_id = $request->input('task_id');

        $user = \Auth::user();

        $task   = Task::whereId($task_id)->first();
        $update = $user->assignCompletedTask($task);
}
  • 写回答

2条回答 默认 最新

  • doudeng1870 2016-11-16 21:56
    关注

    You have to send the ID via a route

    Route::get('/your-url/{id}', 'YourController@addCompletedTasks');
    

    Then you need to have this function declared in your User model:

    public function tasks(){
        return $this->belongsToMany('Task');
    }
    

    And then in your controller have this function:

    public function addCompletedTasks($id) {
         // if you want to you can also just do 
         Auth::user()->tasks()->attach($id);
    }
    

    If you want to send it via POST in the request and not via the ID in the URL your function would need to be like that:

    public function addCompletedTasks(Request $request) {
      Auth::user()->tasks()->attach($request->get('id'));
    }
    

    In either case you can't send a full php object or you will have to serialize it and deserialize it, easier to just send the ID.

    But in my opinion you should check first if a task is related to the id first. But if you have this control on the database level it's ok.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 海康威视如何实现客户端软件对设备语音请求的处理。
  • ¥15 支付宝h5参数如何实现跳转
  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?
  • ¥15 stata实证代码答疑
  • ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
  • ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
  • ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
  • ¥15 husky+kinova jaco2 仿真