आप अपनी क्वेरी को लेफ्ट जॉइन जैसे
. के रूप में फिर से लिख सकते हैं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();