লারাভেল চেক করা যদি একটি রেকর্ড বিদ্যমান থাকে


257

আমি লারাভেলে নতুন। দয়া করে নবাগত প্রশ্নটি ক্ষমা করুন তবে একটি রেকর্ড বিদ্যমান থাকলে আমি কীভাবে খুঁজে পাব?

$user = User::where('email', '=', Input::get('email'));

$userরেকর্ড আছে কিনা তা দেখতে আমি এখানে কী করতে পারি ?


2
ভাল শুরু করার জন্য আপনাকে find ব্যবহারকারীর ক্যোয়ারিতে ফাইন্ডঅরফেইল () বা এর অনুরূপ কার্যকর করতে হবে
মার্ক বাকের

9
এটি সত্যিই সহায়তা করে না
বেন

1
তাহলে এটা কি করে? কেন এটি সাহায্য করে না? $user = User::where('email', '=', Input::get('email'));কেবলমাত্র একটি ক্যোয়ারী তৈরি করে $user, আপনার সেই ক্যোয়ারী চালানো দরকার। findOrFail()এই ক্যোয়ারীটি কার্যকর করার একটি উপায়। get()অন্য উপায় হতে হবে, firstOrFail()অন্য
মার্ক বেকার

2
যদি কোনও পরামর্শ "সত্যই সহায়তা করে না" কেন এটি সত্যই সহায়তা করে না তা বলার চেষ্টা করুন , কারণ এই
মার্ক বাকের

এই i.imgur.com/ulqyOiw.png বিবেচনা করুন চাকাটি পুনরায় উদ্ভাবন করার দরকার নেই
নিকোসোস

উত্তর:


565

আপনি যদি পরে ব্যবহারকারীর সাথে কাজ করতে চান তবে এটি নির্ভর করে বা কেবল কোনও উপস্থিত রয়েছে কিনা তা পরীক্ষা করে দেখুন।

আপনি যদি ব্যবহারকারীর অবজেক্টটি বিদ্যমান থাকে তা ব্যবহার করতে চান:

$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

এবং আপনি যদি শুধুমাত্র পরীক্ষা করতে চান

if (User::where('email', '=', Input::get('email'))->count() > 0) {
   // user found
}

বা এমনকি ভাল

if (User::where('email', '=', Input::get('email'))->exists()) {
   // user found
}

20
যদি আপনি exists()অস্তিত্বহীন রেকর্ডের বিরুদ্ধে কল করেন তবে এটি ত্রুটি দেয়:Call to a member function exists() on null
Volatil3

36
@ ভোলিটিল 3 আপনি কিছু ভুল করছেন। আপনি ইতিমধ্যে ক্যোয়ারী
চালানোর

7
@ লুকাসজিটার অনুমান যে আপনি ঠিক বলেছেন। আমি ইতিমধ্যে কল করেছিলামfirst()
ভোলিটিল

1
আমি মনে করি এটি ব্যবহারকারীর উপস্থিতি খুঁজে পাওয়ার সবচেয়ে ভাল উপায়। ব্যবহারকারী :: যেখানে ('ইমেল', '=', 'মান') -> গণনা ()> 0;
জনক পুষ্পকুমারা

1
@ ভোটিলাইল 3 আমি সবেমাত্র পরীক্ষিত -> উপস্থিত () লারাভেল 5.5 সহ, এটি উপস্থিত না থাকলে এটি মিথ্যা বলে।
পেজওয়াক

26

অন্যতম সেরা সমাধান হ'ল পদ্ধতি firstOrNewবা firstOrCreateপদ্ধতিটি ব্যবহার করা । ডকুমেন্টেশন উভয় আরও বিশদের হয়েছে।


5
প্রশ্ন মাপসই না, এখনও, খুব দরকারী ফাংশন। উভয়ের মধ্যে পার্থক্য হ'ল ফার্স্টআরনিউজ মডেলটির একটি উদাহরণ ইনস্ট্যান্ট করে যখন ফার্স্টআরক্রিয়েট তাত্ক্ষণিকভাবে অনুসন্ধান করা মডেলটি সংরক্ষণ করে তাই আপনাকে ফার্স্টআরক্রিয়েট'র মডেলটিতে পরিবর্তনগুলি আপডেট করতে হবে।
গকিগুকস

হ্যাঁ, বা এটির ভাবনার অন্য উপায়টি হ'ল, আপনি যদি সমস্ত বৈশিষ্ট্য একসাথে (দ্বিতীয় প্যারামিটারটি ব্যবহার করতে পারেন) পাস করতে পারেন তবে ফার্স্টঅরক্রিয়েট ব্যবহার করুন, তবে সংরক্ষণের আগে যদি আরও যুক্তি প্রয়োজন হয় তবে ফার্স্টআরনইউ করুন
উইলিয়াম তারেল

21
if (User::where('email', Input::get('email'))->exists()) {
    // exists
}

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি করার সর্বাধিক দক্ষ ও উত্সর্গীকৃত exists()পদ্ধতি হল পদ্ধতিটি।
রোবো রোবোক

12
if($user->isEmpty()){
    // has no records
}

স্পষ্টত ব্যবহারের সংগ্রহ। নিম্নলিখিত লিঙ্কটি দেখুন: https://laravel.com/docs/5.4/eloquent-colifications


2
হ্যাঁ তবে এটি কোনও সংগ্রহ ফেরত দিচ্ছে না। এটি একক মডেল অবজেক্টটি ফিরিয়ে দিচ্ছে কারণ আপনি ধরে নেবেন যে প্রতিটি ব্যবহারকারীর একটি অনন্য রয়েছে emailতাই ->isEmpty()ত্রুটি ছুঁড়ে দেবে।
ব্যবহারকারীর 3574492

এবং যদি আমি নিম্নলিখিত ত্রুটিটি পাই তবে কী হবে:Call to a member function isEmpty() on null
পাঠরোস

6
if (User::where('email', 'user@email.com')->first())
    // It exists
else
    // It does not exist

আপনার কেবল অস্তিত্বের জন্য পরীক্ষা first()করতে হবে count()কিনা তা ব্যবহার করুন ।

first()হয় দ্রুত , কারণ এটি যেহেতু একটি একক ম্যাচের জন্য পরীক্ষা count()গন্য সব ম্যাচ।


5

ল্যাভেল ইলিউভারে ডিফল্ট উপস্থিত () পদ্ধতি রয়েছে, অনুসরণিত উদাহরণটি দেখুন refer

if(User::where('id', $user_id )->exists()){ // your code... }


4

লারাভেল 5.6.26v

প্রাথমিক কী (ইমেল বা আইডি) এর মাধ্যমে বিদ্যমান রেকর্ডটি সন্ধান করতে

    $user = DB::table('users')->where('email',$email)->first();

তারপর

      if(!$user){
             //user is not found 
      }
      if($user){
             // user found 
      }

"ব্যবহার ডিবি" অন্তর্ভুক্ত করুন এবং টেবিলের নাম ব্যবহারকারীরা ব্যবহারকারীদের মতো উপরের ক্যোয়ারীটি ব্যবহার করে বহুবচনে পরিণত হন


3

অনুরোধ করা ইমেলটি ব্যবহারকারীর টেবিলে উপস্থিত রয়েছে কিনা তা এটি পরীক্ষা করবে:

if (User::where('email', $request->email)->exists()) {
   //email exists in user table
}

1

আপনার নিয়ামক মধ্যে

$this->validate($request, [
        'email' => 'required|unique:user|email',
    ]); 

আপনার দর্শনে - ইতিমধ্যে বিদ্যমান বার্তাটি প্রদর্শন করুন

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

সব থেকে ভালো সমাধান! তবে আমার সারণির নাম পরিবর্তন করতে হবে এবং ইমেল কলামের নাম যুক্ত করতে হবে:required|unique:users,email|email
marcelo2605

1
if ($u = User::where('email', '=', $value)->first())
{
   // do something with $u
   return 'exists';
} else {
  return 'nope';
}

চেষ্টা / ধরা সঙ্গে কাজ করবে

-> পান () এখনও একটি খালি অ্যারে ফিরিয়ে দেবে



0

কোনও রেকর্ড রয়েছে কিনা তা জানা সহজ

$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";


0

আপনি লারাভেল বৈধতা ব্যবহার করতে পারেন।

তবে এই কোডটিও ভাল:

$user = User::where('email',  $request->input('email'))->count();

if($user > 0)
{
   echo "There is data";
}
else
   echo "No data";

0

এটি টেবিলে কোনও নির্দিষ্ট ইমেল ঠিকানা বিদ্যমান কিনা তা পরীক্ষা করবে:

if (isset(User::where('email', Input::get('email'))->value('email')))
{
    // Input::get('email') exist in the table 
}

0

বিবৃতিটির nullমধ্যে চেক করা ifল্যারাভেলকে কোয়েরি শেষ হওয়ার সাথে সাথে 404 ফেরত থেকে বাধা দেয়।

if ( User::find( $userId ) === null ) {

    return "user does not exist";
}
else {
    $user = User::find( $userId );

    return $user;
}

দেখে মনে হচ্ছে এটি ব্যবহারকারীর সন্ধান পেলে এটি দ্বৈত ক্যোয়ারী চালায় তবে আমি অন্য কোনও নির্ভরযোগ্য সমাধান খুঁজে পাচ্ছি না।


আপনি প্রতিস্থাপন করতে পারে findসঙ্গে whereUser::where(id, 1)->first()
এডগার অরতেগা

0
$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
   // user doesn't exist
}

হিসাবে লেখা যেতে পারে

if (User::where('email', '=', Input::get('email'))->first() === null) {
   // user doesn't exist
}

আপনি যদি আসল বিবৃতিতে $ ব্যবহারকারীর ব্যবহার করছেন তবে এটি অস্থায়ী পরিবর্তনশীল বরাদ্দ না করেই সত্য বা মিথ্যা ফিরে আসবে।


0

আমি মনে করি নীচের উপায়টি হ'ল এটি অর্জনের সহজতম উপায়:

    $user = User::where('email', '=', $request->input('email'))->first();
    if ($user) {
       // user doesn't exist!
    }

0

প্রদত্ত রেকর্ড আইডি ডিবি টেবিলে আছে কি না তা পরীক্ষা করার জন্য নীচের পদ্ধতিটি তৈরি করা হয়েছে (নিজের জন্য)।

private function isModelRecordExist($model, $recordId)
{
    if (!$recordId) return false;

    $count = $model->where(['id' => $recordId])->count();

    return $count ? true : false;
}

// To Test
$recordId = 5;
$status = $this->isModelRecordExist( (new MyTestModel()), $recordId);

হোম এটি সাহায্য করে!


0

করার সহজতম উপায়

    public function update(Request $request, $id)
{


    $coupon = Coupon::where('name','=',$request->name)->first(); 

    if($coupon->id != $id){
        $validatedData = $request->validate([
            'discount' => 'required',   
            'name' => 'required|unique:coupons|max:255',      
        ]);
    }


    $requestData = $request->all();
    $coupon = Coupon::findOrFail($id);
    $coupon->update($requestData);
    return redirect('admin/coupons')->with('flash_message', 'Coupon updated!');
}

0

লারাভেল or বা শীর্ষে: সারণির নাম লিখুন, তারপরে উদাহরণের জন্য যেখানে শর্ত শর্ত রয়েছে ('আইডি', $ অনুরোধ-> আইডি)

 public function store(Request $request)
    {

        $target = DB:: table('categories')
                ->where('title', $request->name)
                ->get()->first();
        if ($target === null) { // do what ever you need to do
            $cat = new Category();
            $cat->title = $request->input('name');
            $cat->parent_id = $request->input('parent_id');
            $cat->user_id=auth()->user()->id;
            $cat->save();
            return redirect(route('cats.app'))->with('success', 'App created successfully.');

        }else{ // match found 
            return redirect(route('cats.app'))->with('error', 'App already exists.');
        }

    }

0

রেকর্ডটি বিদ্যমান কিনা তা খতিয়ে দেখার দক্ষ উপায়টি আপনার অবশ্যই কোয়েরির বিপরীতে পরীক্ষা করার জন্য is_null পদ্ধতি ব্যবহার করতে হবে।

নীচের কোডটি সহায়ক হতে পারে:

$user = User::where('email', '=', Input::get('email'));
if(is_null($user)){
 //user does not exist...
}else{
 //user exists...
}

-1

সবচেয়ে কম কাজের বিকল্প:

// if you need to do something with the user 
if ($user = User::whereEmail(Input::get('email'))->first()) {

    // ...

}

// otherwise
$userExists = User::whereEmail(Input::get('email'))->exists();

-1

আমি https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/ কে সহায়তা করতে পারে এমন কিছুর লিঙ্ক এখানে রয়েছে


1
কেবলমাত্র লিঙ্কের উত্তরগুলি ভাল উত্তর নয় । দেখুন "কিভাবে আমি একটি ভাল উত্তর লিখুন?"
পিটার উলফ

-11

এটি ইমেল চেক করার জন্য সহজ কোড যা ডাটাবেসে নেই

    $ ডেটা = $ অনুরোধ-> সমস্ত ();
    = ব্যবহারকারী = ডিবি :: টেবিল ('ব্যবহারকারী') -> প্লাক ('ইমেল') -> টু অ্যারে ();
    যদি (in_array ($ ব্যবহারকারী, $ ডেটা [ 'ইমেল']))
    {
    প্রতিধ্বনি 'বিদ্যমান ইমেল';
    }


8
যদি আপনার সাথে একটি টেবিল ব্যবহারকারী রয়েছে ... 1,1,000,000,000 রেকর্ডের বেশি বলুন, আপনি একটি ভিজিইরি দীর্ঘকাল যাচাই করবেন
ট্রুসটরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.