আপনি যদি অ্যাডোনিসজেএস ব্যবহার করছেন এবং এবিসি -202, এবিসি -201 ... এর মতো মিশ্র আইডি রয়েছে, আপনি ক্যোয়ারী বিল্ডারের সাথে কাঁচা প্রশ্নগুলি একত্রিত করতে পারেন এবং উপরের সমাধানটি প্রয়োগ করতে পারেন ( https://stackoverflow.com/a/25061144/4040835 ) নিম্নরূপ:
const sortField =
'membership_id'
const sortDirection =
'asc'
const subquery = UserProfile.query()
.select(
'user_profiles.id',
'user_profiles.user_id',
'user_profiles.membership_id',
'user_profiles.first_name',
'user_profiles.middle_name',
'user_profiles.last_name',
'user_profiles.mobile_number',
'countries.citizenship',
'states.name as state_of_origin',
'user_profiles.gender',
'user_profiles.created_at',
'user_profiles.updated_at'
)
.leftJoin(
'users',
'user_profiles.user_id',
'users.id'
)
.leftJoin(
'countries',
'user_profiles.nationality',
'countries.id'
)
.leftJoin(
'states',
'user_profiles.state_of_origin',
'states.id'
)
.orderByRaw(
`SUBSTRING(:sortField:,3,15)*1 ${sortDirection}`,
{
sortField: sortField,
}
)
.paginate(
page,
per_page
)
নোট:
এই লাইন ইন: SUBSTRING(:sortField:,3,15)*1 ${sortDirection}
,
- '3' হ'ল সংখ্যার আগে সর্বমহলে অ-সংখ্যাগত অক্ষরের সূচক সংখ্যা। যদি আপনার মিশ্র আইডিটি "এবিসি -123" হয় তবে আপনার সূচী নম্বরটি 4 হবে।
- '15' হাইফেনের পরে যতগুলি সংখ্যক সম্ভব অঙ্ক করতে ব্যবহৃত হয়।
- '1' স্ট্রিংগুলিতে গাণিতিক ক্রিয়াকলাপ সম্পাদন করে যা কোনও সংখ্যায় সাবস্ট্রিংকে কার্যকরভাবে কাস্ট করে।
রেফ 1: আপনি কাঁচা প্রশ্নের মধ্যে প্যারামিটার বাইন্ডিং সম্পর্কে আরও পড়তে পারেন: https://knexjs.org/#Raw- বাইন্ডিংস
রেফ 2: অ্যাডোনিস কাঁচা প্রশ্ন: https://adonisjs.com/docs/4.1/query-builder# _raw_queries