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

MySQL 8.0.0 و Laravel خطأ أثناء إدراج حقل تم ترميزه كـ Json في النموذج

Abdelrahman Mostafa10

السؤال

ذلك جزء من الكود لمشروع قمت بنشره على استضافة:

public function storeVerify(array $data): SmsMessageRequest
{
    $data["app_id"] = $app_id = request()->header('app_id');
    $data["phones"] = $data["phone"] ? json_encode(array($data["phone"])) : "[]";
    $data["priority"] = "high";
    $data["type"] = "verify";
    $data["message"] = $data["template"];
    $item = new SmsMessageRequest($data);
    $item->save();
    return $item;
}

ويقوم الكود بترميز مصفوفة إلى JSON وتخزينها في قاعدة البيانات، ولكن أحصل على الخطأ:

SQLSTATE[42000]: Syntax error or access violation: 3143 Invalid JSON path expression. The error is around character position 2. (SQL: insert into sms_message_requests (priority, gateway, app_id, phones, type, message, updated_at, created_at) values (high, panel, 0, ["239272044202"], verify, web-auto-beh-verify, 2023-12-21 14:13:43, 2023-12-21 14:13:43))

عندما أقوم بتسجيل البيانات json_encode(array($data["phone"]))، يظهر أن القيمة هي ["239272044202"] ويبدو أنها الطريقة الصحيحة، وإصدارات MySQL و PHP على الاستضافة هي نفسها.

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

Recommended Posts

  • 0

قاعدة البيانات لا تدعم ادراج مصفوفة في حقل JSON عليك اولا تحويلها الي JSON ثم ادراجها عليك تغير السطر

    $data["phones"] = $data["phone"] ? json_encode(array($data["phone"])) : "[]";

الي : 

$data["phones"] = json_encode($data["phones"])

و مع ذلك يمكنك استخدام الكود التالي لتحويل المصفوفة الي سلسلة JSON اثناء التشغيل 
 

public function storeVerify(array $data): SmsMessageRequest
{
    $data["app_id"] = $app_id = request()->header('app_id');
    $data["phones"] = $data["phone"] ? array($data["phone"]) : [];
    $data["priority"] = "high";
    $data["type"] = "verify";
    $data["message"] = $data["template"];
    $data["phones"] = json_encode($data["phones"]);
    $item = new SmsMessageRequest($data);
    $item->save();
    return $item;
}

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...