اذهب إلى المحتوى

السؤال

نشر

في لارافيل Laravel يتم ملء بعد الحقول بشكل إفتراضي مثل updated_at و created_at، ولكن أتسأل إذا كان هناك طريقة لكي أقوم بعمل بعمل مثل هذه الحقول بحيث يتم تخزين آخر وقت قام المستخدم بتسجيل الدخول إلى الموقع بشكل تلقائي، وبالتالي يمكنني معرفة متى قام كل مستخدم بتسجيل الدخول بشكل سريع من خلال الإطلاع على قاعدة البيانات

كيف أقوم بهذا الأمر؟

Recommended Posts

  • 1
نشر

يمكنك القيام بذلك عبر الخطوات التالية :

في البداية ننفذ التعليمة لنقوم بعملية التهجير 

php artisan make:migration add_login_fields_to_users_table

ثم نذهب إلى المسار database/migrations ثم نفتح الملف add_login_fields_to_users_table ويكون الملف اسمه مع ارقام هي تاريخ انشاء هذا الملف

class AddLoginFieldsToUsersTable extends Migration
{

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->datetime('last_login_at')->nullable();
        });
    }
}

ثم الصق الكود السابق بدلاً عن الكود المكتوب في الملف

الخطوة الثانية:

اذهب إلى المسار app/User.php 

User.php هو ملف ال model الذي يحوي معلومات المستخدم وقد يكون اسم الملف مختلف لديك ع حسب الاسم الذي وضعته عندما انشئت جدول المستخدمين

داخل الملف يوجد المصفوفة protected $fillable قم بإضافة العنصر التالي إليها

protected $fillable = [
        'email',
        'password',

        'last_login_at', ///// هذا العنصر قم بإضافته
];

ثم إذهب إلى المسار التالي app/Http/Controllers/Auth/LoginController.php

سوف تجد هذه الدالة التي تتنفذ عندما يقوم المستخدم بتسجيل دخوله

protected function authenticated(Request $request, $user)
{
    //
}

قم بحذفها وضع هذا الكود بدلاً عنها 

function authenticated(Request $request, $user)
{
    $user->update([
        'last_login_at' => Carbon::now()->toDateTimeString()
	]);
}

بهذه الطريقة سوف يضاف إلى جدول المستخدمين عمود لأخر تاريخ قام به المستخدم بتسجيل الدخول

  • 1
نشر

تخزين الوقت سيكون شبيه بتخزين Created_at ، updated_at

بإمكانك أنشاء last_login_at في ملف migration، كما هو موضح هنا 

$table->timestamp('last_login_at');

بعدها ستذهب الى ملف يسمى auth/login.blade.php ، ستضع هذا ال input بداخل ال Form 

<input type="hidden" name="last_login_at" value="{{ Carbon::now() }}">

 هنا يخزن قيمة الوقت الحالي اثناْ كل عملية تسجيل دخول ، بعدها ستذهب الى ملف app/Request/auth/LoginRequest 

ستجد authenticate Function ، وتمرر القيمة من خلال attempt بهذا الشكل 

if (! Auth::attempt($this->only('email', 'password', 'last_login_at'), $this->boolean('remember'))) {
            RateLimiter::hit($this->throttleKey());
}

هكذا يتم تخزين وقت تسجيل الدخول للمستخدم .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...