雄辩地存储表格数据

时间:2014-03-19 15:38:36

标签: php mysql laravel laravel-4 eloquent

我目前正在使用laravel 4中的Web应用程序。该应用程序的本质是将表单数据存储在数据库中。

由于表单输入框中的名称不同,我的主要问题是将不同的值存储在例程表中,因为我只有一个值字段,并通过id链接该值和指定的任务。我还没有找到一种在例程中为每个字段有效存储一行的方法。

数据库看起来像这样(忽略Arduino和Endringslogg):

Database model diagram

HverTimeController.php:

class HverTimeController extends BaseController

{
    public $restful = true;

    public function getHvertime()
    {
        return View::make('hvertime')
        ->with('title', 'Hvert Time');
    }

    public function postInsert()
    {


        //insert logic

        return Redirect::route('hvertime')
        ->with('message', 'Lagret i databasen!');


    }
}

routes.php文件

Route::get('bassengweb/hvertime', array('as' => 'hvertime', 'uses' => HverTimeController@getHvertime'));
Route::post('bassengweb/insertHT', array('uses' => 'HverTimeController@postInsert'));

雄辩的模特 (尽管上图中的名称是挪威语,但我已经在数据库中将它们更改为英语,如下面的代码所示)

Emp.php(图中的Ansatt)

class Emp extends Eloquent
{
    protected $table = 'emps';
    protected $fillable = array(
        'user_name', 'first_name', 
        'last_name', 'email',
        'password', 'user_type');

    public function routines()
    {
        $this->hasMany('Routine', 'emp_id', 'id');
    }
}

Routine.php(图中的Rutiner)

class Routine extends Eloquent
{
    protected $table = 'routines';
    protected $fillable = array('date', 'time', 'value', 'emp_id');

    public function emps()
    {
        $this->belongsTo('Emp', 'emp_id', 'id');
    }

    public function tasks()
    {
        $this->belongsToMany('Task', 'task_routine', 'routine_id', 'task_id');
    }

    public function measurements()
    {
        $this->belongsToMany('Measurement', 'measure_routine', 'routine_id', 'measure_id');
    }
}

Measurement.php(图中的Målinger表)

class Measurement extends Eloquent
{
    protected $table = 'measurements';
    protected $fillable = array('title');

    public function routines()
    {
        $this->belongsToMany('Routine', 'measure_routine');
    }
}

Task.php(图中的Oppgaver表)

class Task extends Eloquent
{
    protected $table = 'tasks';
    protected $fillable = array('title');

    public function routines()
    {
        $this->belongsToMany('Routine', 'task_routine', 'task_id', 'routine_id');
    }
}

hvertime.blade.php

@extends('layouts.default')

@section('content')

    <h1>HVER TIME</h1>

    @if($errors->has())
        <ul>
            {{ $errors->first('badendeTime', '<li>:message</li>') }}
            {{ $errors->first('temp', '<li>:message</li>') }}
        </ul>
    @endif

    {{ Form::open(array('url' => 'bassengweb/insertHT', 'method' => 'POST')) }}
        <table>
            <tr>
                <td>{{ Form::label('badendeTime', 'Badende per Time:') }}</td>
                <td>{{ Form::text('badendeTime', Input::old('badendeTime')) }}</td>
            </tr>

            <tr>
                <td>{{ Form::label('temp', 'Temperatur:') }}</td>
                <td>{{ Form::text('temp', Input::old('temp')) }}</td>
            </tr>

            <tr>
                <td><hr/></td>
                <td>{{ Form::submit('Lagre') }}</td>
            </tr>
        </table>
    {{ Form::close() }}
@stop

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

分析这些关系

Oppgaver x OppgaverRutiner x Rutiner

Oppgaver (hasMany) OppgaverRutiner and 
Rutiner (hasMany)  OppgaverRutiner too

所以反过来

OppgaverRutiner (belongsTo) Oppgaver
OppgaverRutiner (belongsTo) Rutiner

Ansatt x Rutiner

Ansatt (hasMany) Rutiner

所以反过来

Rutiner (belongsTo) Ansatt 

Malinger x MalingerRutiner x Rutiner

在表格中MalingerRutiner缺少表格Rutiner的外键!!!!!

Malinger (hasMany) MalingerRutiner and
Rutiner (hasMany) MalingerRutiner too

反向

MalingerRutiner (belongsTo)  Malinger
MalingerRutiner (belongsTo) Rutiner

Basseng x MalingerRutiner

Basseng (hasMany) MalingerRutiner

反向

MalingerRutiner (belongsTo)  Basseng

你的模特中有这个逻辑吗?