حل خطای "Call to undefined method Illuminate\Database\Query\Builder::getAuthIdentifierName()" در لاراول و nwidart -laravel-modules

حل خطای "Call to undefined method Illuminate\Database\Query\Builder::getAuthIdentifierName()" در لاراول و nwidart -laravel-modules

اگر با فریم وورک لاراول کار کرده باشید، بدون شک تا کنون اسم پکیج بسیار جالب laravel-Modules به گوشتان خورده است! التبه اگر نخورده نگران نباشید! من در این مطلب کمی در مورد این پلاگین مفید وصحبت خواهم کرد و بعد از آن به رفع یکی از خطاهایی که ممکن است هنگام استفاده از این ماژول یا پلاگین یا پکیج! برای شما پیش آید خواهیم پرداخت.

اگر با فریم وورک لاراول کار کرده باشید، بدون شک تا کنون اسم پکیج بسیار جالب laravel-Modules به گوشتان خورده است!

التبه اگر نخورده هم نگران نباشید! من در این مطلب کمی در مورد این پلاگین مفید وصحبت خواهم کرد و بعد از آن به رفع یکی از خطاهایی که ممکن است هنگام استفاده از این ماژول یا پلاگین یا پکیج! برای شما پیش آید خواهیم پرداخت.

خوب، laravel-modules پاگین برای ماژولار کردن پروژه های شما می باشد، که می توانید آن را از این لینک در گیت هاب دانلود کنید.

در مورد قابلیت ها و امکانات و اینکه کلا laravel-modules چیست در مطلب یا مطالب بعدی بصورت کاملا مفصل توضیح خواهم داد.

 

در هنگام استفاده از این پکیج ممکن است با خطایی بصورت زیر هنگام احراز هویت کاربر برخورد کنید:

 

BadMethodCallException
Call to undefined method Modules\Users\Entities\User::getAuthIdentifierName()

این خطا در صورتی رخ خواهد داد که شما یک ماژول user جدید ایجاد کنید و خودتان اقدام به ایجاد مدل آن نمایید.

همانطور که می دانیم لاراول بصورت پیش فرض و هنگام نصب یک مدل بنام User برای ما ایجاد می کند. (مراجعه کنید به پوشه ی app)

اگر این مدل پیش فرض را باز کنید خواهید دید که مدل یوزر از کلاس Auth ارث بری میکند، و حال اگر به ماژول یوزری که توسط لاراول ماژول ایجاد کرده اید مراجعه کنید خواهید دید که این مدل از Model ارث بری میکند! به همین دلیل برای نمونه هنگام استفاده از Auth::loginUsingId(1) با خطایی که در بالا به آن اشاره شده است برخورد خواهید کرد.

برای رفع این مشکل یا مدل پیش فرض User لاراول را به پوشه ی Entities ماژول خود منتقل کنید یا مدل User خود را بصورت زیر تغییر دهید:

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
	use Notifiable;

 

با این تغییر دیگر پیغام خطای getAuthIdentifierName برای شما نمایش داده نخواهد شد و احراز هویت به درستی کار خواهد کرد.

 

امیدوارم این آموزش برای شما مفید واقع شده باشه.

 

درصورتی که سوالی یا پیشنهادی دارید از بخش نظرات اعلام فرمایید.

 


ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
هنوز برای این مطلب نظری ارسال نشده است!