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

السؤال

نشر

السلام عليكم.

لم استخدم قاعدة البيانات postgresql بتوسع.

عندي كود يعمل على mysql واريد ان احوله للعمل على postgresql.

مثل ان هذه الاكواد لا تعمل على posgres

DB::select(
'SELECT
id
FROM
teachers
WHERE
(subject_id = ? AND levels = ?)
OR
EXISTS
(SELECT id FROM users WHERE name = ? AND phone = ?)',
[$request->subject, json_encode($request->levels), $request->name, $request->mobile]
);

ففي المثال السابق يعطي لي هذا الخطأ

SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: json = unknown
LINE 6: (subject_id = $1 AND levels = $2)
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.

مثل الصورة المرفقة

فكيف أحول هذه الاكواد لتعمل بشكل صحيح على posgresql?

علما بأن العامود levels من نوع json

Opera Snapshot_2021-09-30_191354_trend-center.herokuapp.com.png

Recommended Posts

  • 1
نشر

كحل نهائي لجميع المشاكل يقترح إستعمال باني إستعلامات عوضا عن إستعلامات SQL جاهزة من الواجهة DB , و ذلك لأن العديد من الإستعلامات التي نكتبها قد لا تعمل مع نظم إدارة قواعد بيانات أخرى تختلف عن تلك التي اختبرنا عليها إستعلاماتنا الأولى . و إلا فإننا سنحتاج تنقيح كل إستعلاماتنا لتلائم بيئة إنتاجنا .

إستعمال Eloquent سيحد من هذا المشكل .  

فمثال مثل الذي لديك :

DB::select(
'SELECT
id
FROM
teachers
WHERE
(subject_id = ? AND levels = ?)
OR
EXISTS
(SELECT id FROM users WHERE name = ? AND phone = ?)',
[$request->subject, json_encode($request->levels), $request->name, $request->mobile]
);

 يصبح : 

DB::table('teachers')
    ->where('subject_id', $subject)
    ->where('levels',json_decode($request->levels))
    ->orWhereExists(function($query) {
                    DB::table('users')
                            ->where('name',$request->name)
                            ->where('phone',$request->mobile)
                            ->select('id');
                })
    ->select('id')
    ->get();

و هكذا .. 

يعطي هذا مرونة أكبر و قابلية أكثر للتلائم مع كامل النظم . 

تعرف على المبادئ الأساسيّة لإطار العمل Eloquent ORM .

  • 0
نشر

لغات ال SQL جميها متشابهة الى حد كبير ولكن يوجد بعض الاختلافات بينها .

يمكنك استخدام هذا الموقع sqlines الذي سوف يساعدك بكل تأكيد.

1-ضع التعليمة خاصتك على الطرف الايسر

2-ثم عند كلمة Source اختار نوع اللغة التي تريد ان تحولها وعند كلمةtarget اختار اللغة التي تريد ان تحول اليها .

3-ثم اضغط convert

4- سيظهر الكود باللغة التي اخترتها على الطرف الأيمن

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...