Dans laravel, j'ai cette erreur Appel à une fonction membre prepare () sur null, lors de l'insertion d'un enregistrement dans la base de données.
Je code en laravel et ma base de données est MongoDB.
namespace App\Http\Controllers; use App\Employee; use Illuminate\Http\Request; class EmployeeController extends Controller { public function create() { return view('addemployee'); } public function store(Request $request) { $employee = new Employee(); $employee->firstName = $request->get('firstName'); $employee->middleName = $request->get('middleName'); $employee->lastName = $request->get('lastName'); $employee->gender = $request->get('gender'); $employee->city = $request->get('city'); $employee->localAddress = $request->get('localAddress'); $employee->permanentAddress = $request->get('permanentAddress'); $employee->emailAddress = $request->get('emailAddress'); $employee->mobileNumber = $request->get('mobileNumber'); $employee->email = $request->get('email'); $employee->department = $request->get('department'); $employee->designation = $request->get('designation'); $employee->save(); return redirect('addemployee')->with('Success', 'Data Inserted Successfully!'); }
}
p >
3 Réponses :
Dans votre modèle, vous avez écrit protected $ collection
au lieu de protected $ table
.
Au fait, c'est probablement pas de lien avec votre erreur, mais vous a écrit parmanentAddress au lieu de permanentAddress dans votre propriété $ fillable
. Cela peut générer une autre erreur puisque vous mettez également à jour ce champ dans votre contrôleur.
Modèle d'employé fixe
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Jenssegers\Mongodb\Eloquent\Model as Eloquent; class Employee extends Eloquent { protected $connection = 'mongodb'; protected $table = 'employee'; protected $fillable = [ 'firstName', 'middleName', 'lastName', 'gender', 'city', 'localAddress', 'permanentAddress', 'emailAddress', 'mobileNumber', 'email', 'department', 'designation' ]; }
Merci d'avoir attiré mon attention sur mon erreur d'orthographe, mais ce n'est pas important maintenant, et j'utilise MongoDB donc il doit s'agir de $ collection et non de $ table. @ P.Ellul
Oups, je n'ai pas réalisé que vous étendiez autre chose que le modèle d'origine.
Montre que tu connais la réponse. je m'excuse pour cela.
Assurez-vous
Votre modèle étend Jenssegers \ Mongodb \ Eloquent \ Model et non Model
utilisez Jenssegers \ Mongodb \ Eloquent \ Model comme Eloquent;
La classe Node étend Eloquent { }
Cela devrait résoudre le problème si vous utilisez le package jenssegers / laravel-mongodb :
Dans config / auth
, assurez-vous que la valeur de model
est correctement définie si vous n'utilisez pas l'emplacement du modèle User
par défaut: p>
use Jenssegers\Mongodb\Auth\User as Authenticatable; ... class User extends Authenticatable implements JWTSubject { ... }
Ensuite, votre classe de modèle User
doit étendre correctement Authenticable
(à partir du package):
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User\User::class, ],
Si tout le reste (garde, etc.) a été configuré correctement selon la documentation, cela devrait fonctionner sans aucun problème.
Veuillez partager votre classe de modèle d'employé, afin que nous puissions vérifier cela aussi
ceci est mon application d'espace de noms de classe de modèle d'employé
code
; utilisez Illuminate \ Database \ Eloquent \ Model; utilisez Jenssegers \ Mongodb \ Eloquent \ Model comme Eloquent; La classe Employé étend Eloquent {protected $ connection = 'mongodb'; protected $ collection = 'employé'; protected $ fillable = ['firstName', 'middleName', 'lastName', 'gender', 'city', 'localAddress', 'parmanentAddress', 'emailAddress', 'mobileNumber', 'email', 'department', ' la désignation']; }