我正在使用最新的Laravel安装.
我的表结构如下:https://www.uploady.com/#!/ download/OQSH4ualzUD/x2SIqdcaulqzSSsy
我试过这些查询:
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()
Run Code Online (Sandbox Code Playgroud)
理想情况下,它应返回最后3条记录.但它返回空白数组.我该如何解决这个问题?请帮忙.
Code::all()
Run Code Online (Sandbox Code Playgroud)
返回所有4条记录.
代码模型:
<?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');
}
}
Run Code Online (Sandbox Code Playgroud)
luk*_*ter 174
使用where
了!=
结合运营商whereNull
Code::where('to_be_used_by_user_id', '!=' , 2)->orWhereNull('to_be_used_by_user_id')->get()
Run Code Online (Sandbox Code Playgroud)
Abd*_*fiz 16
对于where field not empty
这个工作对我来说:
->where('table_name.field_name', '<>', '')
Run Code Online (Sandbox Code Playgroud)
或者像这样:
Code::whereNotIn('to_be_used_by_user_id', [2])->get();
Run Code Online (Sandbox Code Playgroud)
虽然这似乎有效
Code::where('to_be_used_by_user_id', '!=' , 2)->orWhereNull('to_be_used_by_user_id')->get();
Run Code Online (Sandbox Code Playgroud)
您不应该将其用于大型表,因为作为常规规则,where子句中的“或”将停止使用索引的查询。您将从“键查找”变为“全表扫描”
而是尝试联盟
$first = Code::whereNull('to_be_used_by_user_id');
$code = Code::where('to_be_used_by_user_id', '!=' , 2)
->union($first)
->get();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
198071 次 |
最近记录: |