أود أن أكون قادرًا على تحديد شيء كهذا:
-- [params]
-- groups.id :group_id
للحصول على مدخل معلمة يكون قائمة منسدلة للمجموعات. لقد سميت القيمة group_id هنا لأنني أفترض أن هذا ما ستقدمه هذه القائمة المنسدلة.
أود أن أكون قادرًا على تحديد شيء كهذا:
-- [params]
-- groups.id :group_id
للحصول على مدخل معلمة يكون قائمة منسدلة للمجموعات. لقد سميت القيمة group_id هنا لأنني أفترض أن هذا ما ستقدمه هذه القائمة المنسدلة.
أعتقد أن هذا سيكون مفيدًا جدًا أيضًا.
شيء مثل المعلمة القابلة للتحديد user_id الموجودة ولكن للمجموعات. سيكون أفضل إذا كان يمكنه قبول قيم متعددة. ![]()
انتظر، ماذا؟
هل يمكنك أن تشير لي إلى المكان الذي يوضح كيفية استخدام ذلك؟
يمكنك استخدام شيء مثل:
-- [params]
-- user_id :user
SELECT *
FROM posts
WHERE user_id =:user
LIMIT 5
وهذا سيؤدي إلى ظهور قائمة منسدلة حيث يمكنك الإكمال التلقائي لمستخدم. ![]()
ومع ذلك، لاحظت للتو أنه في المرة الأولى التي تقوم فيها بتشغيله في الوقت الحالي، فإنه يظهر خطأ ولا يعرض مربع المعلمة، ولكنه يظهر إذا قمت بتحديث الصفحة. سأرى ما إذا كان بإمكاني العثور على شخص للتحقق من ذلك. ![]()
اسأل (وانتظر) وستتلقى… لقد أضفنا للتو دعمًا لمعامل :group_list في هذا الطلب.
إليك مثال على الميزة قيد الاستخدام:
-- [params]
-- group_list :groups
SELECT g.id,g.name
FROM groups g
WHERE g.name IN (:groups)
ORDER BY g.name ASC
يجب أن يمنحك هذا ما يلي في واجهة المستخدم:
هذا يبدو رائعًا.
أتطلع بالفعل إلى تطبيق هذا. ![]()
تم إغلاق موضوعي قبل أن أتمكن من الرد عليه…
هل هناك طريقة لتقييد نوع المعلمة الجديد -- group_list بمجموعة واحدة؟ لقد قمت بتضمينه في تقاريرنا الحالية، لكنها جميعًا مكتوبة وتتوقع اسم مجموعة واحد، وفي الاختبار وجدت نفسي أخطئ فيه بشكل متكرر.
لقد أعدت فتحه وأزلته. ![]()
على الرغم من أنني لست متأكدًا مما تقصده؟ هل يمكنك تقديم مثال لماهية المشكلة؟
أعني أنني أقوم بتشغيل الاستعلام لمجموعتي الأولى. ثم عندما أريد تبديل المجموعات، أضيف مجموعة بدلاً من ذلك → خطأ
أوه. هذا مثير للاهتمام. لقد كنت أستخدمه بشكل أكبر مثل:
WHERE g.name IN (:groups)
WHERE g.id IN (:groups)
على الرغم من أن هذا سيسمح لك عن طريق الخطأ بوضع أكثر من واحد حتى لو كنت ستتجنب الخطأ. ![]()
أفضل الخطأ على الاختيار العشوائي من القائمة ![]()
بصراحة، لقد تحققت للتو من ذلك وأعتقد أنني ربما كنت أحلم باستخدامه لـ group_ids لأنه لا يعجبه على الإطلاق. سأشطب ذلك من السجل.
ليس لدي فكرة من أين أتتني هذه الفكرة. كان بإمكاني أن أقسم أنني استخدمتها قبل يومين. ![]()
بالمناسبة، لقد نسيت تمامًا أن أقول:
هذا رائع!!!
شكرًا لك!!! ![]()
لا، لا توجد طريقة لتحديدها لمجموعة واحدة. على حد علمي.
ستكون المعلمة من group_list مصفوفة إذا تم تحديد أكثر من عنصر واحد وسلسلة نصية إذا تم تحديد عنصر واحد فقط.
لذلك، عندما يكون هناك عنصر واحد فقط، يمكنك القيام بذلك:
-- [params]
-- group_list :groups
SELECT g.id,g.name
FROM groups g
WHERE g.name = :groups
ORDER BY g.name ASC
ولكن نظرًا لأنها مصفوفة، فإن ما يلي سيعمل لكل من عنصر واحد وعناصر متعددة:
-- [params]
-- group_list :groups
SELECT g.id,g.name
FROM groups g
WHERE g.name IN (:groups)
ORDER BY g.name ASC
ولكن لا توجد طريقة لإخبار واجهة المستخدم “اقبل عنصرًا واحدًا فقط كاختيار”.
وثائق @saradev هنا Utilizing Parameters in Data Explorer Queries تسلط الضوء على القائمة الكاملة للمعاملات لمستكشف البيانات التي تحتوي أحيانًا على قائمة منسدلة وأحيانًا لا. (قائمة المعاملات على Github)
إليك جدول للمعاملات، يشير أيضًا إلى ما إذا كان هناك تحكم محدد لها.
| معامل | قائمة منسدلة متاحة |
|---|---|
| int | |
| bigint | |
| boolean | |
| null boolean | |
| string | |
| date | |
| time | |
| datetime | |
| double | |
| user_id | |
| post_id | |
| topic_id | |
| string_list | |
| category_id | |
| group_id | |
| int_list | |
| string_list | |
| user_list | |
| group_list |
من الناحية المثالية، يجب أن يكون للقوائم المنسدلة المستخدمة والمُظهرة في مستكشف البيانات مظهر وشعور مشابه للتطبيق الأساسي. دعنا نكتشف كيف يمكننا تحقيق ذلك.
لقد أعدنا تصميم مربع إدخال المعلمات بالكامل مؤخرًا. تحتوي معظم الأنواع على مربعات منسدلة خاصة بها وتدعم التحقق من الصحة مع مطالبات خطأ دلالية الآن. ![]()
إليك أحدث جدول للمعلمات يشير إلى ما إذا كان هناك عنصر تحكم محدد له.
| معلم | القائمة المنسدلة متاحة |
|---|---|
| int | |
| bigint | |
| boolean | |
| null boolean | |
| string | |
| date | |
| time | |
| datetime | |
| double | |
| user_id | |
| post_id | |
| topic_id | |
| category_id | |
| group_id | |
| int_list | |
| string_list | |
| user_list | |
| group_list |
@ganncamp قد ترغب في معرفة هذا التغيير ![]()
هل يمكنك شرح كيفية عمل هذه القوائم المنسدلة؟ لم أتمكن من الحصول على قائمة منسدلة حيث أتمكن من تحديد قائمة من السلاسل النصية المتاحة في تلك القائمة المنسدلة.
@jordan-violet رد متأخر، لكن @SaraDev قامت بكتابة هنا حول المعلمات المتاحة، وتم تحديث OP بواسطة Linca: