Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Laravel में जहां मौजूद नहीं है

आप अपनी क्वेरी को लेफ्ट जॉइन जैसे

. के रूप में फिर से लिख सकते हैं
SELECT i.*
FROM item i
LEFT JOIN qualifications q ON q.item_id = i.id  AND q.user_id = 2
WHERE q.item_id IS NULL

क्वेरी बिल्डर में आप इसे

. के रूप में लिख सकते हैं
DB::table('item as i')
    ->select('i.*')
    ->leftJoin('qualifications as q', function ($join) use($user_id) {
        $join->on('q.item_id', '=', 'i.id')
             ->on('q.user_id', '=', $user_id);
    })
    ->whereNull('q.item_id')
    ->get();

एक और तरीका जो मैं आपको अपनाने का सुझाव देता हूं, वह है अपने संबंधों और मॉडलों को स्थापित करना और इसे वाक्पटु तरीके से करना

class Item extends Model
{
    public function qualifications()
    {
        return $this->hasMany(\App\Models\Qualification::class, 'item_id');
    }
}

class Qualification extends Model
{
    public function qualifications()
    {
        return $this->belongsTo(Item::class, 'item_id');
    }
}

और फिर आप रिश्तों की अनुपस्थिति को क्वेरी करना का उपयोग कर सकते हैं

Item::whereDoesntHave('qualifications', function ($query) use($user_id) {
    $query->where('user_id', '=', $user_id);
})->get();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL को PostgreSQL में माइग्रेट करना - SQL कोड में कौन सी विशेषताएँ दिखाई नहीं दे रही हैं, यह महत्वपूर्ण होगी?

  2. PHP:पीडीओ का उपयोग करके MySQL से छवि पुनर्प्राप्त करें

  3. MySQL - INSERT, VALUES, और SELECT का मेल?

  4. ORDER BY FIELD , दिया गया फील्ड ऑर्डर सबसे अंत में आता है

  5. MySQL:1970 से पहले की तारीखें