gpt4 book ai didi

php - 如何在 Laravel 中限定模型数据的范围

转载 作者:行者123 更新时间:2023-11-30 21:54:46 24 4
gpt4 key购买 nike

我需要根据使用 Project 模型的相关项目将 project_id 保存到 task 表中。

项目模型

public function scopeProject($query, $id)
{
return $query->where('project_id', $id);
}

现在我将使用 TaskController 中的 store 方法保存到任务表,如下所示

public function store(Request $request, $id, Task $task)// this is line 45
{
$task = new Task;
$task->task_name = $request->input('name');
$task->body = $request->input('body');
$task->assign = $request->input('status');
$task->priority = $request->input('status');
$task->duedate = date("Y-m-d", strtotime($request->input("date")));// $request->input('date');
$task->project_id = $id;
$task->save();
}

但是当我要保存这个数据时发生了以下错误

ErrorException in TasksController.php line 45: Argument 3 passed to App\Http\Controllers\TasksController::store() must be an instance of App\Task, none given

那么我如何从使用 Project 模型中获取 project_id 到我的 TaskController

最佳答案

如果您不使用 Laravel Route Model Binding,则需要将 project_id 作为查询字符串或隐藏输入进行传递

使用路由模型绑定(bind)的例子

像下面这样定义你的路线

Route::post('/projects/{project}/tasks', 'TaskController@store');

Project模型中设置任务关系

public function tasks() {
return $this->hasMany(\App\Task::class);
}

在你的 Controller 中

public function store(Request $request, Project $project)
{
$task = new Task;
$task->task_name = $request->input('name');
$task->body = $request->input('body');
$task->assign = $request->input('status');
$task->priority = $request->input('status');
$task->duedate = \Carbon\Carbon::createFromFormat('Y-m-d', $request->input("date"));

// This will set the project_id on task and save it
$project->tasks()->save($task);
}

使用查询字符串或隐藏输入的示例

public function store(Request $request)
{
$task = new Task;
$task->task_name = $request->input('name');
$task->body = $request->input('body');
$task->assign = $request->input('status');
$task->priority = $request->input('status');
$task->duedate = \Carbon\Carbon::createFromFormat('Y-m-d', $request->input("date"));

// Find the project with the given id
$project = Project::findOrFail($request->get('project_id'));

// This will set the project_id on task and save it
$project->tasks()->save($task);
}

关于php - 如何在 Laravel 中限定模型数据的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45668733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com