लारवेल एलोकेंट "जहां नहीं है"


143

मुझे क्वेरी लिखने में परेशानी हो रही है laravel eloquent ORM

मेरी क्वेरी है

SELECT book_name,dt_of_pub,pub_lang,no_page,book_price  
FROM book_mast        
WHERE book_price NOT IN (100,200);

अब मैं इस क्वेरी को लार्वा एलोकेंट में बदलना चाहता हूं।

जवाबों:


312

क्वेरी बिल्डर:

DB::table(..)->select(..)->whereNotIn('book_price', [100,200])->get();

वाक्पटु:

SomeModel::select(..)->whereNotIn('book_price', [100,200])->get();

27
selectमें एक सरणी के साथ प्रतिस्थापित किया जा सकता है get
Marwelln

6
आधिकारिक दस्तावेज में खोज करने की तुलना में SO तेज़ है!
फेर गार्सिया

अच्छा जवाब। यह मेरी बहुत मददगार है।
यज्ञेश भालला 13

@Marwelln, हाँ, लेकिन यह जटिल प्रश्नों के साथ काम नहीं करेगा। जैसे AddSelect विधि के साथ।
ऑरेंज-मैन

26

आप निम्न तरीके से भी WhereNotIn का उपयोग कर सकते हैं :

ModelName::whereNotIn('book_price', [100,200])->get(['field_name1','field_name2']);

यह विशिष्ट क्षेत्रों के साथ रिकॉर्ड का संग्रह लौटाएगा


7

जब तक मैंने ->toArray()परिणाम में विधि जोड़ी, मुझे एक उप क्वेरी बनाने में समस्या थी , मुझे आशा है कि यह एक से अधिक मदद करता है क्योंकि मेरे पास समाधान की तलाश में एक अच्छा समय था।

उदाहरण

DB::table('user')                 
  ->select('id','name')
  ->whereNotIn('id', DB::table('curses')->select('id_user')->where('id_user', '=', $id)->get()->toArray())
  ->get();

4

लागू करने का गतिशील तरीका

 $users = User::where('status',0)->get();
    foreach ($users as $user) {
                $data[] = $user->id;
            }
    $available = User::orderBy('name', 'DEC')->whereNotIn('id', $data)->get();

1
आपका उदाहरण जटिल है। User::orderBy('name', 'DESC')->where('status', '!=',0)->get()
Adsy2010

3

जहाँनॉटइन विधि यह पुष्टि करती है कि दिए गए कॉलम का मान दिए गए एरे में निहित नहीं है:

$users = DB::table('users')
                    ->whereNotIn('id', [1, 2, 3])
                    ->get();

2

आप WhereNotInनिम्न तरीके से उपयोग कर सकते हैं :

$category=DB::table('category')
          ->whereNotIn('category_id',[14 ,15])
          ->get();`enter code here`

2

आप इस उदाहरण का उपयोग डायनामिक रूप से व्हेयर नॉट इन में करने के लिए कर सकते हैं

$ उपयोगकर्ता = उपयोगकर्ता :: जहां ('company_id', '=', 1) -> चयन ('id) -> get () -> toArray ();

$ otherCompany = उपयोगकर्ता :: जहाँNotIn ('id', $ उपयोगकर्ता) -> get ();

0

आप निम्नलिखित कर सकते हैं।

DB::table('book_mast') 
->selectRaw('book_name,dt_of_pub,pub_lang,no_page,book_price')  
->whereNotIn('book_price',[100,200]);

0

इसका सीधा सा मतलब है कि आपके पास एक मान है और आप उस मान / रिकॉर्ड को छोड़कर रिकॉर्ड चाहते हैं।

आप बस सरणी को कहाँ से पास कर सकते हैं जहाँ (लार्वा फंक्शन)।

क्वेरी बिल्डर के साथ

$users = DB::table('applications')
                    ->whereNotIn('id', [1,3,5]) 
                    ->get(); //will return without applications which contain this id's

वाक्पटु के साथ।

$result = ModelClassName::select('your_column_name')->whereNotIn('your_column_name', ['satatus1', 'satatus2']); //return without application which contain this status.

0

यह मेरा 7 लारावेल के लिए काम करने वाला संस्करण है

DB::table('user')                 
  ->select('id','name')
  ->whereNotIn('id', DB::table('curses')->where('id_user', $id)->pluck('id_user')->toArray())
  ->get();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.