在表中添加数据显示我添加关系船时出现错误

时间:2019-05-13 12:05:11

标签: laravel-5

我是laravel的初学者,在父亲的餐桌和Eleve的餐桌之间建立了一对多的关系,此后,当我尝试添加一个新学生时,他显示了这个错误

SQLSTATE [HY000]:常规错误:1364字段'father_id'没有默认值(SQL:插入elevesnomprenom,{{1} },adressedate_naisssexenationnaliteniveau_scolaireupdated_at)值(穆罕默德,费尔基奇,突尼斯,2018-07- 22,Ungarçon,tunisen,1,2019-05-13 10:56:28,2019-05-13 10:56:28))

我该如何纠正此问题,需要您的帮助

这是精灵表

created_at

精灵的模型

public function up()
{
    Schema::create('eleves', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('father_id');
        $table->string('nom');
        $table->string('prenom');
        $table->date('date_naiss');
        $table->string('sexe');
        $table->string('nationnalite');
        $table->string('niveau_scolaire');
        $table->string('adresse');
        $table->foreign('father_id')->references('id')->on('fathers')->onDelete('cascade')->onUpdate('cascade');
        $table->timestamps();
    });
}

父亲的模范

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Eleve extends Model
{
    protected $fillable = ['nom', 'father_id', 'prenom', 'date_naiss', 'sexe', 'nationnalite', 'niveau_scolaire', 'adresse'];

    public function father()
    {
        return $this->belongsTo('App\Father');
    }
}

和精灵之刃

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Father extends Model
{

    protected $fillable = ['nom', 'prenom', 'adresse', 'num_tel', 'email', 'login', 'date_naissance ', 'password'];

    public function user()
    {
        return $this->belongsTo(User::class);
    }


    public function eleve()
    {
        return $this->hasMany('App\Eleve');
    }


学生的控制人

命名空间App \ Http \ Controllers;

使用Illuminate \ Http \ Request; 使用App \ Eleve;

EleveController类扩展了Controller {

<section id="no-more-tables">
    <table class="table table-bordered table-striped table-condensed cf">
        <thead class="cf">
            <tr>
                <th>id-eleve</th>
                <th>Nom</th>
                <th>Prenom</th>
                <th>Adresse</th>
                <th>Age</th>
                <th>Sexe</th>
                <th>Nationnalité</th>

                <th>Niveau scolaire </th>
                <th>les actions</th>
            </tr>
        </thead>
        <tbody>
            @foreach($eleves as $eleve)
            <tr>

                <td class="numeric" data-title="id-parent">{{$eleve->id}}</td>
                <td class="numeric" data-title="Nom">{{$eleve->nom}}</td>
                <td class="numeric" data-title="Prenom">{{$eleve->prenom}}</td>
                <td class="numeric" data-title="Adresse">{{$eleve->adresse}}</td>
                <td class="numeric" data-title="Numéro telephone">{{$eleve->date_naiss}}</td>
                <td class="numeric" data-title="Email">{{$eleve->sexe}}</td>
                <td class="numeric" data-title="Login">{{$eleve->nationnalite}}</td>
                <td class="numeric" data-title="Password">{{$eleve->niveau_scolaire}}</td>
                <td>
                    <button href="#editEmployeeModal" class="btn btn-theme" data-target="#editEmployeeModal "
                        data-mytitle="{{$eleve->nom}}" data-myprenom="{{$eleve->prenom}}"
                        data-myadresse="{{$eleve->adresse}}" data-myage="{{$eleve->date_naiss}}"
                        data-mysexe="{{$eleve->sexe}}" data-mynationalite="{{$eleve->nationnalite}}"
                        data-myniveau="{{$eleve->niveau_scolaire}}" data-catid={{$eleve->id}} class="edit"
                        data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Edit">&#xE254;</i>
                    </button>
                    <button href="#deleteEmployeeModal" class="btn btn-theme" data-target="#deleteEmployeeModal"
                        data-catid={{$eleve->id}} class="delete" data-toggle="modal"> <i class="material-icons"
                            data-toggle="tooltip" title="Delete">&#xE872;</i> </button>
                </td>

            </tr>
        </tbody>
        @endforeach
    </table>
    <div class="text-center">
        {{ $eleves->links() }}
    </div>
    <div class="clearfix">

        <div class="hint-text">Affichage de <b>5</b> sur <b>25</b> entrées</div>

        <div id="addEmployeeModal" href="create" class="modal fade">
            <div class="modal-dialog">
                <div class="modal-content">
                    <form action="{{route('eleves.store')}}" method="post">
                        {{csrf_field()}}
                        <div class="modal-header">
                            <h4 class="modal-title">Ajouter un éléve</h4>
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                        </div>
                        <div class="modal-body">
                            <div class="form-group">
                                <label>nom</label>
                                <input type="text" id="nom" name="nom" class="form-control" required>
                            </div>
                            <div class="form-group">
                                <label>prenom</label>
                                <input type="text" id="prenom" name="prenom" class="form-control" required>
                            </div>
                            <div class="form-group">
                                <label>adresse</label>
                                <textarea name="adresse" id="adresse" class="form-control" required></textarea>
                            </div>
                            <div class="form-group">

                                <label for="start">Date Naissance</label>

                                <input type="date" id="date_naiss" name="date_naiss" value="2018-07-22" min="2018-01-01"
                                    max="2030-12-31">
                                <!-- <label>Date Naissance</label>


      <input type="text"  name=" date_naiss" id="date_naiss" class="form-control" required>
    </div>  -->
                            </div>
                            <div class="form-group">
                                <div>
                                    <input type="radio" id="sexe" name="sexe" value="une fille" checked>
                                    <label for="sexe">une fille</label>
                                </div>

                                <div>
                                    <input type="radio" id="sexe" name="sexe" value="Un garçon">
                                    <label for="sexe">Un garçon</label>
                                </div>

                            </div>

                            <div class="form-group">
                                <label>Nationnalité</label>
                                <input type="text" name="nationnalite" id="nationnalite" class="form-control" required>
                            </div>
                            <div class="form-group">
                                <label>Niveau Scolaire</label>
                                <input type="text" name="niveau_scolaire" id="niveau_scolaire" class="form-control"
                                    required>
                            </div>

                        </div>

                        <div class="modal-footer">
                            <input type="button" class="btn btn-default" data-dismiss="modal" value="Annuler">
                            <input type="submit" class="btn btn-success" value="Ajouter">
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</section>

}

2 个答案:

答案 0 :(得分:0)

getSingleFileContentMap()表中的father_id字段是必需的。您必须将其设置为可选,或者更有可能将其添加到表单中。

要使该字段为可选字段,请替换此行

eleves

$table->unsignedBigInteger('father_id');

要将其添加到表单中,您可能会使用$table->unsignedBigInteger('father_id')->nullable(); ,例如:

<select>

注意:在视图文件中调用数据库是一种不好的做法。更好的方法是将<form ...> <select name="father_id"> @foreach(\App\Father::all() as $father) <option name="{{ $father->id }}">{{ $father->nom }}</option> @endforeach </select> 加载到控制器内部并将其传递给视图:

Father

并在视图中:

public function create()
{
    $fathers = Father::all();
    return view('...', ['fathers' => $fathers]);
}

答案 1 :(得分:0)

在EleveController中,我添加使用App \ Father;并且我添加了此功能

 public function create()
{ 
    $fathers= Father::all();
     return view('admin.eleves',compact('fathers'));

}



and in the eleve blade.php i add this 



<select name="father_id">
        @foreach($fathers as $father)
            <option name="{{ $father->id }}">{{ $father->nom }}</option>
        @endforeach
    </select>

问题是,向我显示了相同的错误“未定义变量:父亲”