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

استخدام إطار العمل Laravel مع قاعدة بيانات mongodb

Hani Eid

السؤال

السلام عليكم ورحمة الله وبركاته

انا مبتدئ في البرمجة وشغال على فريم وروك laravel وحولت قاعدة البيانات من mysql  الى mongodb  لأني ابحث عن قاعدة بيانات اكثر مرونه وتتحمل عدد ضخم من البيانات , واشتغل معي بدون مشاكل ما عدا VerifiesEmails و reset password .

السؤال : هل لارافل يعمل بشكل صحيح مع mongodb أم أعود الى mysql افضل .

وهل يوجد طريقة لإعادة عمل VerifiesEmails و reset password , علماً بأن الباكيج اللي نزلته للتعامل مع mongodb   هو  jenssegers/mongodb

ولكم تحياتي 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

نعم لا يوجد أي مشكلة باستخدام قاعدة بيانات mogodb مع laravel، ويمكنك الاطلاع على بعض الأمثلة الموجودة ضمن التوثيق الرسمي ل mongodb عن كيفية استخدامها بالشكل الصحيح مع إطار العمل Laravel.

ومن ناحية استخدام الاستعلامات لن تجد فرق كبير بما أنك تستخدم Eloquent الموجود في لارافل لأن الحزمة jessegers/mongodb تمكنك من استخدام Eloquent أيضاً، أما من ناحية بعض العمليات مثل reset password وغيرها، فيمكنك أيضاً إجرائها بشكل مماثل على mongodb ولكن يجب عليك التأكد من اسماء الحقول التي ستقوم بتعريفها ضمن schema وأيضاً أنماط هذه البيانات، فهنا يجب عليك التأكد من وضع أنماط صحيحة وإلا ستواجه العديد من المشاكل بسبب مرونة هذا النوع من قواعد البيانات ولن تكتشف الخطأ بسهولة.

وبما أنك تستخدم الحزمة jessegers/mongodb باستطاعتك استخدام Authenticable base model والذي سيقوم باستبدال Illuminate\Foundation\Auth\User الافتراضي الموجود في لارافيل ليتوافق مع مستند المستخدم الذي ستقوم بتعريفه:

use Jenssegers\Mongodb\Auth\User as Authenticatable;

class User extends Authenticatable
{
  ....
}

كما يمكنك التحكّم بتغيير اسماء الحقول عن الاسماء الافتراضية في حال احتجت ذلك لإتمام بعض الوظائف، مثلاً ضمن عملية إعادة تعيين كلمة المرور في ملف Auth/ResetsPasswordController.php يمكنك تغيير اسماء الحقول لتتناسب مع الاسماء التي قمت بتعريفها في بنية schema لديك كالتالي:

protected function credentials(Request $request)
{
    $data = $request->only(
        'password', 'password_confirmation', 'token'
    );

    $data['userEmail'] = $request->get('email');

    return $data;
}

ويمكنك إيجاد بعض الأمثلة على الانترنت في حال واجهت أي مشكلة في تطبيق بعض الخصائص

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكراً لك 

بالنسبة ل VerifiesEmails و reset password لايعمل عندي حاولت بشتى الطرق لم أجد حل يجعلها تعمل كما كانت في الإفتراضي الموجود في لارافل

فضلاً وتكرماً منك هل تستطيع أن تفصل لي أكثر في هذة المسألة لإني بحث كثير في الانترنت لم اجد حل ولكي أستفيد ويستفيد الجميع

تحياتي

كل ما احاول ارسل أيميل لإعادة كلمة المرور يطلع لي هذا الخطأ

1546455635.jpg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يخبرك الخطأ بأنه يجب أن تقوم بتضمين واجهة CanResetPassword ضمن مودل المستخدم، وفي التوثيق الرسمي في لارافيل تجد هذه المعلومات في القسم Resetting Passwords ضمن Database Considerations، فيصبح الكود في User.php لديك بشكل مشابه للتالي:

use Illuminate\Auth\Authenticatable;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Eloquent implements AuthenticatableContract,CanResetPasswordContract {
use Authenticatable, CanResetPassword;

...

}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

أشكرك جزيل الشكر لا عدمناك

تمت عملية Reset Password بنجاح 

لكن عارف إني ثقلت عليك بس عندما أعمل register يدخلني مباشرة الى صفحة Home بدون ما يتحقق verify email هذا مع ما نزلت باكج Jenssegers\Mongodb أما في السابق كان كل شي تمام 

هل في حل لهذة المشكلة ؟

 

تحياني

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 35 دقائق مضت قال Hani Eid:

عندما أعمل register يدخلني مباشرة الى صفحة Home بدون ما يتحقق verify email هذا مع ما نزلت باكج Jenssegers\Mongodb أما في السابق كان كل شي تمام 

لقد تم ذكرها أيضاً في التوثيق الرسمي أنه يجب عليك استخدام use Illuminate\Contracts\Auth\MustVerifyEmail أيضاً في المودل الخاص بالمستخدم كالتالي:

use Illuminate\Contracts\Auth\MustVerifyEmail;

class User extends extends Eloquent implements AuthenticatableContract,CanResetPasswordContract, MustVerifyEmail
{

    // ...
}

كما يجب عليك التأكد من وجود الحقل email_verified_at ضمن مستند المستخدم، وعندها سيقوم لارافيل بإرسال البريد الالكتروني لأي مستخدم يقوم بالتسجيل في الموقع.

كما يمكنك الاطلاع على عملية التحقق من البريد الالكتروني الموجودة في الملف Auth\VerificationController والتي يمكنك من خلالها تسجيل مسارات للتحقق جديدة من خلال تمرير الخيار verify كالتالي:

Auth::routes(['verify' => true]);

أرجو منك قراءة التوثيق الرسمي في لارافيل فهو يحوي جميع هذه التفاصيل بالإضافة لتفاصيل أخرى قد تحتاجها. بالتوفيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...