对于初学者来说,将数据从一个表/模型转移到另一个表/模型的最简单方法是什么?

时间:2019-01-18 14:10:04

标签: laravel eloquent

为大片文字预先道歉,但是由于上下文的特定性质,我无法提出一种以较短形式呈现问题的方法。

如果您想跳过我的上下文简介,请向下滚动到下面的虚线:

我正在做编码挑战,这是我的第一个Laravel应用程序,其中我需要设置一个出勤跟踪器/时间跟踪器(显示特定员工每天在工作上花费的时间(在签到和签到之间)退出)。

我是一个完整的初学者(现在从Laracasts的Scratch On Laracasts中学习Laravel 5.7),所以我正在寻找一种解决方案/代码方法,该方法/方法应属于我目前的知识范围,而不是我所不知道的东西。还没有在Laracasts上学习。

基本上,对我来说,最好指向一种语法和方法的解决方案,这些解决方案在Laracast上的第20集之前显示(基本路由,基本控制器用法,基本资源控制器用法,获取和发布,补丁,删除方法) ,非常基础的雄辩关系(仅知道belongsTo和hasMany关系)。

请注意,坚持使用这些方法完全是可取的,但是其他解决方案绝对不受欢迎。

------------------------------------------------ -------

这种情况的摘要是,我有一个html表,其中要显示员工的出勤统计信息。我有一个“员工管理” 页面(/员工/管理视图),可以在其中添加新员工并将其保存在“当前员工”表中。

/ employees / manage视图中的摘录:

<div class="table_container">
    <table class="table table-striped">
        . . . . . . . . .. 

        @foreach($employees as $employee)
            <tr>
                <td>{{ $employee->id }}</td>
                <td>{{ $employee->name }}</td>
                <th>{{ $employee->position }}</th>
            </tr>
        @endforeach
    </table>
</div>

EmployeesController中的代码:

public function manage()
{
    $employees = Employee::all();
    return view('employees.manage', compact('employees'));
}



public function store()
{

    $employee = new Employee();

    $employee->name = request('name');
    $employee->position = request('position');

    $employee->save();

    return redirect('/employees/manage');
}

我也有一个“出勤管理” 页面(/出席者/管理/视图),基本上可以从表单类型中选择可用的雇员。然后,我计划通过相应的按钮“签入”或“签出”员工。

<option selected>Select an Employee</option>
@foreach($attendants as $attendant)
    <option value="{{ $attendant->name }}">{{ $attendant->name }}</option>
@endforeach

我应该如何将现有员工纳入选择表?我一直在考虑在 Employee Attendant 模型之间建立雄辩的关系:

class Attendant extends Model
{
    public function employee()
    {
        return $this->belongsTo(Employee::class);
    }
}

这是服务员的迁移:

{
    Schema::create('attendants', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('employee_id');
        $table->foreign('employee_id')->references('id')>on('employees');

        . . . . .
        $table->timestamps();
    });
}

所以,基本上,我的问题是,我将如何在选择表单中列出可用员工?

谢谢。

1 个答案:

答案 0 :(得分:0)

/员工/管理视图列表:很好

EmployeesController


public function store(Request $request)
{
    // Use validation 
    Employee::create($request->all());
    return redirect()->route(employees.manage); //Try to use route
}

对于HTML表单,使用Laravel Collective可以减少代码。加入laravel形式的集体之后

{!! Form::select('attendants', $attendants, $selected_val,['id'=>'id','class'=>'class']) !!}

用于选择框和选项的一行代码

使用Validation