Ich verwende derzeit die neueste Laravel-Version.
Ich habe folgende Abfragen versucht:
Code::where('to_be_used_by_user_id', '<>' , 2)->get()
Code::whereNotIn('to_be_used_by_user_id', [2])->get()
Code::where('to_be_used_by_user_id', 'NOT IN', 2)->get()
Im Idealfall sollten alle Datensätze außer zurückgegeben werden user_id = 2
, es wird jedoch ein leeres Array zurückgegeben. Wie gehe ich das an?
Code::all()
Dies gibt alle 4 Datensätze zurück.
Codemodell:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Code extends Model
{
protected $fillable = ['value', 'registration_id', 'generated_for_user_id', 'to_be_used_by_user_id', 'code_type_id', 'is_used'];
public function code_type()
{
return $this->belongsTo('App\CodeType');
}
}
Dafür
where field not empty
hat bei mir funktioniert:quelle
Während dies zu funktionieren scheint
Sie sollten es nicht für große Tabellen verwenden, da "oder" in Ihrer where-Klausel in der Regel die Abfrage zur Verwendung des Index stoppt. Sie wechseln von "Key Lookup" zu "Full Table Scan".
Versuchen Sie stattdessen Union
quelle
Oder so:
quelle