Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel |如何使用表单对数据库中的存储项进行分组_Php_Laravel_Laravel 5 - Fatal编程技术网

Php Laravel |如何使用表单对数据库中的存储项进行分组

Php Laravel |如何使用表单对数据库中的存储项进行分组,php,laravel,laravel-5,Php,Laravel,Laravel 5,我使用一个定义了默认任务的数据库表,并在表单中使用“foreach()”循环遍历它们。每个任务都有一个复选框,如果未选中,数据将不会进入数据库。当为特定项目定义了一个任务时,这不是问题。但当定义了多个任务时,它只选择最后一个任务并将其存储到数据库中。我需要存储它们,而不仅仅是最后一个任务 当复选框未选中时,我使用jQuery禁用字段 这是我的表格代码: <form id="task-form" class="uk-form-stacked" met

我使用一个定义了默认任务的数据库表,并在表单中使用“foreach()”循环遍历它们。每个任务都有一个复选框,如果未选中,数据将不会进入数据库。当为特定项目定义了一个任务时,这不是问题。但当定义了多个任务时,它只选择最后一个任务并将其存储到数据库中。我需要存储它们,而不仅仅是最后一个任务

当复选框未选中时,我使用jQuery禁用字段

这是我的表格代码:

     <form id="task-form"
        class="uk-form-stacked"
        method="post"
        action="{{ route('project.storeTasks', ['project' => $project->id]) }}">

        <table class="uk-table uk-table-middle">
            <tr>
                <th>Selecteer</th>
                <th>Omschrijving</th>
                <th>Toelichting</th>
                <th>Uitvoering door</th>
                <th>Budget</th>
                <th>Deadline</th>
            </tr>

            @foreach($defaulttasks as $task)

                <tr>
                    <td>
                        <input type="checkbox"
                                class="uk-checkbox selected"
                                name="tasks[{{ $task->id }}][checkbox]"
                                value="{{ $task->id }}"
                                checked>
                    </td>
                    <td>
                        <div class="uk-margin">
                            <div class="uk-form-controls">
                                <input type="text"
                                    class="input uk-input uk-width-1-1"
                                    name="tasks[{{ $task->id }}][title]"
                                    value="{{ old('title', isset($task->title)
                                                ? $task->title
                                                : null) }}">
                            </div>
                        </div>
                    </td>
                    <td>
                        <div class="uk-margin">
                            <div class="uk-form-controls">
                                <textarea class="input uk-textarea uk-width-1-1"
                                        name="tasks[{{ $task->id }}][description]"
                                        rows="1"
                                        value="">{{ old('description', isset($task->description)
                                                    ? $task->description
                                                    : null) }}</textarea>
                            </div>
                        </div>
                    </td>
                    <td>
                        <div class="uk-margin">
                            <div class="uk-form-controls">
                                <select class="input uk-select uk-width-1-1" name="tasks[{{ $task->id }}][teammember]">
                                    {{-- @foreach($project->team as $teammember)
                                        <!-- <option value="{{ $teammember->id }}">{{ $teammember->name }}</option> -->
                                    @endforeach --}}
                                </select>

                            </div>
                        </div>
                    </td>
                    <td>
                        <div class="uk-margin">
                            <div class="uk-form-controls">
                                <input type="number"
                                    class="input uk-input"
                                    name="tasks[{{ $task->id }}][budget]"
                                    step="any"
                                    value="{{ old('budget', isset($task->budget)
                                                ? $task->budget
                                                : null) }}">
                            </div>
                        </div>
                    </td>
                    <td>
                        <div class="uk-margin">
                            <div class="uk-form-controls">
                                <input type="text"
                                    class="input uk-input"
                                    name="tasks[{{ $task->id }}][deadline]"
                                    value="{{ old('deadline', isset($task->deadline)
                                                ? $task->deadline
                                                : null) }}">
                            </div>
                        </div>
                    </td>               

                    <input class="input" type="hidden" name="project_id" value="{{ $project->id }}">
                </tr>

            @endforeach

        {{ csrf_field() }}
        </table>                                    
    </form>
如果你们需要更多信息,告诉我

谢谢


编辑:根据我在FrankerZ帮助下所做的更改,它只存储第一个选定的任务,而不是所有选定的任务。

您需要将输入元素转换为数组。如果在网页上多次输出
,则在将请求发送到服务器时,仅提交最后一次输入。当您使用括号表示法(即,
task[$id]
)时,PHP自动支持转换为数组。转换字段:

<tr>
    <td>
        <input type="checkbox"
                class="uk-checkbox selected"
                name="tasks[{{ $task->id }}][checkbox]"
                value="{{ $task->id }}"
                checked>
    </td>
    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <input type="text"
                    class="input uk-input uk-width-1-1"
                    name="tasks[{{ $task->id }}][title]"
                    value="{{ old('title', isset($task->title)
                                ? $task->title
                                : null) }}">
            </div>
        </div>
    </td>
    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <textarea class="input uk-textarea uk-width-1-1"
                        name="tasks[{{ $task->id }}][description]"
                        rows="1"
                        value="">{{ old('description', isset($task->description)
                                    ? $task->description
                                    : null) }}</textarea>
            </div>
        </div>
    </td>

    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <input type="number"
                    class="input uk-input"
                    name="tasks[{{ $task->id }}][budget]"
                    step="any"
                    value="{{ old('budget', isset($task->budget)
                                ? $task->budget
                                : null) }}">
            </div>
        </div>
    </td>
    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <input type="text"
                    class="input uk-input"
                    name="tasks[{{ $task->id }}]deadline"
                    value="{{ old('deadline', isset($task->deadline)
                                ? $task->deadline
                                : null) }}">
            </div>
        </div>
    </td>               

    <input class="input" type="hidden" name="project_id" value="{{ $project->id }}">
</tr>

它确实有效,但并不完全有效。我像你提到的那样更改了输入字段的名称。但是当我执行“
dd($request->checkbox)
”时,它只给我任务的id,而不是所有其他输入:
array:3[▼   14=>“14”15=>“15”16=>“16”]
。所以你所做的不起作用。我得到这个错误:试图获取非-object@iiRobin我确实在宽限期之前更新了它。你在使用我的更新代码吗?我和你一样更新了我的代码。它不再给我一个错误,但它不再存储多个任务,而是只存储第一个任务。执行
var\u dump($new\u task)
并确保看到创建的每个新任务。然后我会调查
$project->tasks()->save()
,看看当我执行
var\u dump($new\u task)
时,它如何支持多个添加(抱歉,不是laravel专家)它实际上只显示通过复选框选中的第一个任务,而不是所有选中的任务,
<tr>
    <td>
        <input type="checkbox"
                class="uk-checkbox selected"
                name="tasks[{{ $task->id }}][checkbox]"
                value="{{ $task->id }}"
                checked>
    </td>
    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <input type="text"
                    class="input uk-input uk-width-1-1"
                    name="tasks[{{ $task->id }}][title]"
                    value="{{ old('title', isset($task->title)
                                ? $task->title
                                : null) }}">
            </div>
        </div>
    </td>
    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <textarea class="input uk-textarea uk-width-1-1"
                        name="tasks[{{ $task->id }}][description]"
                        rows="1"
                        value="">{{ old('description', isset($task->description)
                                    ? $task->description
                                    : null) }}</textarea>
            </div>
        </div>
    </td>

    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <input type="number"
                    class="input uk-input"
                    name="tasks[{{ $task->id }}][budget]"
                    step="any"
                    value="{{ old('budget', isset($task->budget)
                                ? $task->budget
                                : null) }}">
            </div>
        </div>
    </td>
    <td>
        <div class="uk-margin">
            <div class="uk-form-controls">
                <input type="text"
                    class="input uk-input"
                    name="tasks[{{ $task->id }}]deadline"
                    value="{{ old('deadline', isset($task->deadline)
                                ? $task->deadline
                                : null) }}">
            </div>
        </div>
    </td>               

    <input class="input" type="hidden" name="project_id" value="{{ $project->id }}">
</tr>
$input = $request->all();
if(!empty($input['tasks']) && is_array($input['tasks']))
{
    foreach ($input['tasks'] as $id => $task) {
        // Create new task entry.
        $new_task = new Task([
            'project_id' => (integer) $input['project_id'],
            'title' => $task['title'],
            'description' => $task['description'],
            'status' => (integer) 1,
            'user_id' => (integer) 17,
            'budget' => $task['budget'],
            'deadline' => Carbon::parse($task['deadline'])->toDateString()
        ]);

        // Find the project and attach the new task to the project.
        $project = $cached_projects->find($project);
        $project->tasks()->save($new_task);

    }
    // Flush cache.
    Cache::tags('tasks')->flush();

    // Set message and reload the tasks view.
    setMessage('De taak is met succes toegevoegd aan het project.', 'success');
    return redirect()->route('project.tasks', ['project' => $project->id]);
}
else
{
    // Find the project.
    $project = $cached_projects->find($project);

    setMessage('Er zijn geen taken aan het project toegevoegd.', 'danger');
    return redirect()->route('project.tasks', ['project' => $project->id]);
}