根据以下3个表格寻找最佳实践:
任务(id,title,description) 用户(id,名称) User_task(user_id,task_id)
我的类/对象用户有一个函数addToCompletedTasks(任务任务),可以将任务添加到已完成任务列表中(将任务添加到表User_task中)。
我正在寻找最佳做法,将我已完成的任务从我的视图发送到我的控制器。 现在我发送了一个ID,但我想知道是否可以发送对象,所以我不必在控制器中实例化任务,将其添加到completedtasks列表中
public function insertCompletedTask(Request $request)
{
$task_id = $request->input('task_id');
$user = \Auth::user();
$task = Task::whereId($task_id)->first();
$update = $user->assignCompletedTask($task);
}
答案 0 :(得分:1)
您必须通过路线发送ID
Route::get('/your-url/{id}', 'YourController@addCompletedTasks');
然后您需要在User模型中声明此函数:
public function tasks(){
return $this->belongsToMany('Task');
}
然后在你的控制器中有这个功能:
public function addCompletedTasks($id) {
// if you want to you can also just do
Auth::user()->tasks()->attach($id);
}
如果您想在请求中通过POST发送,而不是通过URL中的ID发送,您的功能需要像这样:
public function addCompletedTasks(Request $request) {
Auth::user()->tasks()->attach($request->get('id'));
}
在任何一种情况下,您都无法发送完整的php对象,或者您必须将其序列化并反序列化,更容易发送ID。
但在我看来,你应首先检查任务是否与id首先相关。但如果您在数据库级别上拥有此控件,那就没问题。
答案 1 :(得分:0)
如果您返回视图,则可以将数据发送回视图,如下所示:
return view('view-name',array('variable_view' => $variable));
您将使用数组中的键作为视图中的变量。并且数组中的值($ variable)是来自控制器的变量。因此,在您的视图中,您将键入$ variable_view并使用$ variable,因此您可以将任务对象发送到视图。
在我看来,我会在视图中使用尽可能少的PHP。