В Laravel я получил эту ошибку при вставке записи в мою базу данных MongoDB.
Call to a member function prepare() on null
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!');
}
}
Это мой класс модели сотрудников:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Employee extends Eloquent
{
protected $connection = 'mongodb';
protected $collection = 'employee';
protected $fillable = [
'firstName',
'middleName',
'lastName',
'gender',
'city',
'localAddress',
'parmanentAddress',
'emailAddress',
'mobileNumber',
'email',
'department',
'designation'
];
}






В вашей модели вы написали protected $collection вместо protected $table.
Кстати, это, вероятно, не связано с вашей ошибкой, но вы написали parmanentAddress вместо адрес постоянного проживания в своем свойстве $fillable. Это может вызвать другую ошибку, поскольку вы также обновляете это поле в своем контроллере.
Фиксированная модель сотрудника
<?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'
];
}
К сожалению, я не понял, что вы расширяете что-то еще, кроме исходной модели.
Покажи, что ты знаешь ответ. я извиняюсь за это.
Убедись
Ваша модель расширяет Jenssegers\Mongodb\Eloquent\Model, а не модель
используйте Jenssegers\Mongodb\Eloquent\Model как Eloquent;
класс Node расширяет Eloquent { }
Это должно решить проблему при использовании пакета Йенссегерс/laravel-mongodb:
В config/auth убедитесь, что значение model правильно установлено если не используется расположение модели по умолчанию User:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User\User::class,
],
Затем ваш класс модели User должен правильно расширяться Authenticable (из пакета):
use Jenssegers\Mongodb\Auth\User as Authenticatable;
...
class User extends Authenticatable implements JWTSubject { ... }
Если все остальное (защита и т. д.) было настроено правильно в соответствии с документами, все должно работать без проблем.
Спасибо, что обратили мое внимание на мою орфографическую ошибку, но сейчас это не важно, и я использую MongoDB, поэтому это должна быть $ collection, а не $ table. @П.Эллул