লারাভেল স্পষ্টতই "যেখানে নেই"


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
মার্ভেলেন

6
সরকারী ডকুমেন্টেশনে অনুসন্ধানের চেয়ে এসও দ্রুত!
ফের গার্সিয়া

সুন্দর উত্তর। এটা আমার খুব সহায়ক।
যজ্ঞেশ ভাললা

@ মার্ভেলন, হ্যাঁ, তবে এটি জটিল প্রশ্নের সাথে কাজ করবে না। উদাহরণস্বরূপ অ্যাডসিলিট পদ্ধতিতে।
কমলা-ম্যান

26

আপনি নিম্নলিখিত পদ্ধতিতে যেখানে নটইন ব্যবহার করতে পারেন :

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()
অ্যাডসি 2010


2

আপনি WhereNotInনিম্নলিখিত উপায়ে ব্যবহার করতে পারেন :

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

2

আপনি এই উদাহরণটি গতিশীলভাবে যেখানে নেই সেখানে কল করার জন্য ব্যবহার করতে পারেন

$ ব্যবহারকারীর = ব্যবহারকারীর :: যেখানে ('কোম্পানী_আইডি', '=', 1) -> নির্বাচন করুন ('আইডি) -> পান () -> টু অ্যারে ();

C otherCompany = ব্যবহারকারীর :: যেখানে নটইন ('আইডি', $ ব্যবহারকারী) -> পান ();

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();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.