【问题标题】:adding data in table show me error when i add the relation ships当我添加关系时,在表中添加数据会显示错误
【发布时间】:2019-05-13 12:05:11
【问题描述】:

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

SQLSTATE[HY000]:一般错误:1364 字段“father_id”没有默认值(SQL:插入elevesnomprenomadressedate_naiss,@987654326 @, nationnalite, niveau_scolaire, updated_at, created_at) 值 (mohamed, ferchichi, 突尼斯, 2018-07-22, Un garçon, tunisen, 1, 2019-05-13 10:56:28, 2019-05-13 10:56:28))

如何解决这个问题我需要你的帮助

这是十一的桌子

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();
    });
}

eleve的型号

<?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');
    }


还有精灵之刃

<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>

学生的控制者

命名空间 App\Http\Controllers;

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

类 EleveController 扩展控制器 {

public function index()
    {
         $eleves = Eleve::paginate(5);
        return view('admin.eleves',compact('eleves'));
    }






 public function store(Request $request)
    {
        Eleve::create($request->all());
        session()->flash('success',' Cet nouvel éléve a été enregistré avec succés');
           return redirect()->back();
    }




 public function update(Request $request, $id)
    {
        $eleve = Eleve::findOrFail($request->eleve_id);
        $eleve->update($request->all());
        session()->flash('success','Cet éléve a été modifié avec succés'); 
       return redirect()->back();
    }




 public function destroy(Request $request)
    {
        $eleve = Eleve::findOrFail($request->eleve_id);
         $eleve->delete();
         session()->flash('success','Cet éleve a été supprimé avec succés');
         return redirect()->back();
    }

}

【问题讨论】:

  • 你能发布创建学生的代码(可能在控制器中)吗?
  • 我添加了学生的控制器

标签: laravel-5


【解决方案1】:

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

要使该字段可选替换此行

$table->unsignedBigInteger('father_id');

$table->unsignedBigInteger('father_id')->nullable();

要将其添加到表单中,您可能会使用&lt;select&gt;,例如:

<form ...>
    <select name="father_id">
        @foreach(\App\Father::all() as $father)
            <option name="{{ $father->id }}">{{ $father->nom }}</option>
        @endforeach
    </select>

注意:在视图文件中调用数据库是不好的做法。更好的方法是在控制器中加载Fathers 并将其传递给视图:

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

在视图中:

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

【讨论】:

  • 当我在 eleve Blade.php 中添加选择时,它向我显示此错误 Class 'Father' not found (View: C:\xampp\htdocs\ecole\resources\views\admin\eleves.blade .php) 但是我在 eleve 控制器中添加模型
  • 我错了,您必须添加完整的命名空间:\App\Father::all()。虽然在视图中进行数据库调用是不好的做法,但我建议将其移至控制器并手动将其传递给视图。我已经更新了我的答案。
  • 我不知道问题出在哪里我再次添加此代码但它在刀片中显示相同的错误“未定义变量:父亲”
  • 您需要在第二个参数中将其传递给view(),请参见我的示例。如果不起作用,请发布ElevesController::create
  • 是的,我试过了,我在答案中添加了我的代码,在视图未定义变量父亲中出现了同样的错误
【解决方案2】:

在 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>

问题是它显示了同样的错误“未定义的变量:父亲”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多