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

السؤال

نشر

لدي الكود البرمجي التالي الذي يقوم بالجمع بين جدولين ويختبر شرط معيّن:

$res = DB::table('book_author')
            ->join('books', 'books.id', '=', 'book_author.book_id')
            ->where('book_author.author_id', '=', $author_id)
            ->where('book_author.book_id', '=', $book_id);
            if($res){
                return true;
            }
            else{
                return false;
            }

ولكن المشكلة أن الناتج يكون دوماً true ولا يصل أبداً إلى false. ماهو الخطأ؟

Recommended Posts

  • 0
نشر

السبب في المُشكلة أنك لا تقوم بإرجاع النتائج من الإستعلام فحالياً المُتغير res يحمل نُسخة من باني الإستعلامات فقط ( Query Builder ) و لا يحتوي على نتيجة ذلك الإستعلام لجلب النتائج إستخدم التابع get بالشكل التالي:

$res = DB::table('book_author')
  ->join('books', 'books.id', '=', 'book_author.book_id')
  ->where('book_author.author_id', '=', $author_id)
  ->where('book_author.book_id', '=', $book_id)
  ->get();

حيث أن التابع get سيقوم بإرجاع collection ثم بإمكانك التحقق من وجود نتائج بالشكل التالي:

if($res->isNotEmpty()){
  return true;
}
else{
  return false;
}

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...