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

السؤال

نشر (معدل)

لو نفترض ان لدنيا حقل في قاعده البيانات وهو ك الاتي 

محمد فادي عادل جواريش 

اريد جمله sql تمكني ب البحث عن الاسم بكل الاشكال 

مثل محمد جواريش او محمد فادي او محمد عادل الخ

laravel elquent or sql statement

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر
بتاريخ On 18‏/7‏/2023 at 15:26 قال mohammad.jawareesh:

هناك input من filed search 

استخدم قيمة ذلك الحقل لتنفيذ البحث في قاعدة البيانات، كالتالي:

في ملف العرض (View) الخاص بك، أنشئ نموذج (Form) بحث بالشكل التالي:

<form method="GET" action="/search">
  <input type="text" name="query" placeholder="ابحث عن الاسم">
  <button type="submit">ابحث</button>
</form>

ثم، في ملف التوجيه (Routes)، حدد مسار للبحث وربطه بوظيفة في وحدة التحكم (Controller)، كالتالي:

Route::get('/search', 'SearchController@search');

وفي وحدة التحكم (Controller) الخاصة بالبحث، تستطيع استقبال الاستعلام (query) المدخل من الحقل واستخدامه في جملة البحث، كالتالي:

use Illuminate\Http\Request;
use App\Models\Table;

class SearchController extends Controller
{
    public function search(Request $request)
    {
        $query = $request->input('query');

        $results = Table::where('name', 'LIKE', '%' . $query . '%')->get();

        // عرض النتائج أو قم بالإجراءات المناسبة

        return view('search_results', ['results' => $results]);
    }
}

بحيث تستقبل الاستعلام (query) من الحقل بواسطة كائن Request، ثم استخدامه في جملة البحث للبحث عن السجلات التي تحتوي على الاستعلام في حقل الاسم، وتُرسل النتائج إلى عرض (View) المستخدم لعرضها بطريقة مناسبة.

واستبدل Table بالاسم الصحيح للنموذج لديك، واستبدال search_results بعرض النتائج أيضًا.

  • 0
نشر

نستخدم جملة SQL كالتالي للبحث عن الأسماء بجميع الأشكال الممكنة:

SELECT * FROM table_name WHERE name LIKE '%محمد%' AND name LIKE '%فادي%' AND name LIKE '%عادل%' AND name LIKE '%جواريش%';

أما إذا كنت تستخدم إطار عمل Laravel وتستخدم ORM Eloquent، فاستخدم الكود التالي:

$results = DB::table('table_name')
    ->where('name', 'LIKE', '%محمد%')
    ->where('name', 'LIKE', '%فادي%')
    ->where('name', 'LIKE', '%عادل%')
    ->where('name', 'LIKE', '%جواريش%')
    ->get();

وبالطبع نستبدل table_name بالاسم الصحيح للجدول الذي تحتوي عليه البيانات.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mustafa Suleiman:

نستخدم جملة SQL كالتالي للبحث عن الأسماء بجميع الأشكال الممكنة:

SELECT * FROM table_name WHERE name LIKE '%محمد%' AND name LIKE '%فادي%' AND name LIKE '%عادل%' AND name LIKE '%جواريش%';

أما إذا كنت تستخدم إطار عمل Laravel وتستخدم ORM Eloquent، فاستخدم الكود التالي:

$results = DB::table('table_name')
    ->where('name', 'LIKE', '%محمد%')
    ->where('name', 'LIKE', '%فادي%')
    ->where('name', 'LIKE', '%عادل%')
    ->where('name', 'LIKE', '%جواريش%')
    ->get();

وبالطبع نستبدل table_name بالاسم الصحيح للجدول الذي تحتوي عليه البيانات.

هناك input من filed search 

  • 0
نشر

جرب المحايلة باستخدام عدد n من استعلامات OR LIKE بشكل ديناميكي. بحيث تقوم أولا بتجزئة الجملة المراد فلترة النتائج بحسبها: 

$keywords = explode(' ', $originalKeyword);

ثم جهز استعلام Eloquent الخاص بك: 

$results = YourModel::where('name', 'LIKE', $keywords[0]);

ثم من أجل كل كلمة من الكلمات المفتاحية قم بتجهيز استعلام OR LIKE: 

foreach($keywords as $keyword){
   $results = $result->orWhere('name', 'LIKE', $keyword)
}

ثم نفذ الاستعلام في الأخير: 

$result = $result->get();

فيكون الكود كاملا: 

$keywords = explode(' ', $originalKeyword);

$results = YourModel::where('name', 'LIKE', $keywords[0]);

foreach($keywords as $index => $keyword){
   if($index > 0){
      $results = $result->orWhere('name', 'LIKE', $keyword);
   }
}

$result = $result->get();

 

  • 0
نشر

لتنفيذ بحث متعدد الأشكال في قاعدة بيانات SQL باستخدام Laravel Eloquent، يمكنك استخدام الدالة WHERE مع عبارات متعددة لكل كلمة في الاسم. يمكنك استخدام العلامة النجمية (%) كحرف وايلدكارد للبحث عن أي جزء من النص.

هنا هو مثال باستخدام Laravel Eloquent للبحث عن الاسم بكل الأشكال التي ذكرتها:

$searchTerm = 'محمد فادي عادل جواريش';

$results = DB::table('اسم_الجدول')
    ->where(function ($query) use ($searchTerm) {
        $keywords = explode(' ', $searchTerm);
        foreach ($keywords as $keyword) {
            $query->orWhere('اسم_الحقل', 'like', '%' . $keyword . '%');
        }
    })
    ->get();

ضع "اسم_الجدول" بدلًا من اسم الجدول الفعلي في قاعدة البيانات الخاصة بك، و"اسم_الحقل" بدلًا من اسم الحقل الذي تحتوي عليه الأسماء.

هذا الاستعلام سيبحث عن جميع الأسماء التي تحتوي على أي من الكلمات الموجودة في المتغير $searchTerm. وسيعيد جميع الصفوف التي تطابق هذا الشرط.

مثال:

إذا كان لديك الأسماء التالية في قاعدة البيانات:

  1. محمد جواريش
  2. عادل محمد فادي
  3. سامي جواريش

وأدخلت $searchTerm = 'محمد فادي عادل جواريش'، فسيقوم البحث بإعادة الأسماء رقم 1 ورقم 2 لأنها تحتوي على أي من الكلمات المذكورة في البحث.

تنويه: قم بتغيير "اسم_الجدول" و"اسم_الحقل" وفقًا لاسم الجدول والحقل الفعلي في قاعدة البيانات الخاصة بك.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...