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

السؤال

Recommended Posts

  • 0
نشر

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

أولا المشكلة الأساسية في قاعدة البيانات حيث لاحظ أن في جدول users العمودين google_token و google_id ليس لهم قيمة إفتراضية وبما أنك تقوم بتسجيل مستخدم جديد دون إعطاء قيم لتلك الأعمدة تحدث لك مشكلة .

والحل إما إنشاء ملف migration جدبد وجعل هذا الحقل nullable أو وضع قيمة إفتراضية له ولكن ستحتاج إلى تثبيت حزمة  doctrine/dbal   عن طريق الأمر  :

composer require doctrine/dbal  

بعد ذلك يمكنك كتابة الكود التالي في ملف ال migration ومن ثم تنفيذ أمر التهجير :

$table->string('google_id')->nullable()->change();
$table->string('google_token')->nullable()->change();

والحل الثاني هو أثناء إنشاء المستخدم نضع الحقلين ب null . أى في ملف back-end\app\Http\Controllers\AuthController.php بعد سطر 25 نضع الحقلين ب null كالتالي :

$user = User::create([
  'name' => $request->name,
  'email' => $request->email,
  'password' => Hash::make($request->password),
  "google_token"=>null,
  "google_id"=>null
]);

بعد ذلك إذا لم تكن قد أنشأت access cleint لحزمة passport يمكنك تنفيذ الأمر التالي :

php artisan passport:client --personal 

والآن سيعمل معك وسيتم إنشاء المستخدم ولكن تأكد من عدم كتابة بريد موجود بالفعل في قاعدة البيانات.

  • 0
نشر

أنت تستخدم واجهة خلفية غير متناسبة مع الواجهة الأمامية حيث يظهر خطأ 

SQLSTATE[HY000]: General error: 1364 Field 'google_id' doesn't have a default value (SQL: insert into users (name, email, password, updated_at, created_at) 

وبالعودة للمتحكم الخاصة بتسجيل حساب جديد في الواجهة الخلفية نجد:

       $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => Hash::make($request->password)
        ]);

وبالعودة لقاعدة البيانات في جدول users نجد:

        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password')->nullable();
            $table->string('google_id');
            $table->string('google_token');

            $table->rememberToken();
            $table->timestamps();
        });

بالتالي الحقلين:

            $table->string('google_id');
            $table->string('google_token');

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...