Laravel / SQL:其中列等于NOT和NULL

时间:2018-08-16 19:03:31

标签: sql laravel query-builder

LARAVEL 5.4(但可能是一个更通用的SQL问题)

你好!我有一个结构表:

enter image description here

假设它是我的模型“ Table”。

我想要一个查询:

使用(接收)变量:

$ id 数组['id','string',整数]

其中字符串是'<'或'>'

$ status_not_bad = bool;

(如果为true,则包括所有行,其中'status'!=='bad'AND'status'IS NULL);

例如,给我们:

$id = [['id', '>', 0]];

$status_not_bad = true;

Table::thisquery() ... ->get();

“获取状态不错且id> 0的行”将返回第1行和第3行。

但如果我们给出:

$id = [['id', '<', 3]];

$status_not_bad = true;

Table::thisquery() ... ->get();

“获取状态不差且id <3的行”返回第1行

(应该是使用这些变量返回结果的同一查询)。

3 个答案:

答案 0 :(得分:1)

可能您会遇到这样的事情:

UsersDocumentsPopupView()

但是最好先检查$ id键。

答案 1 :(得分:1)

由于第id行= 3,您需要在where语句中使用<=将该行包含在结果集中

$id = ['id', '<=', 3];

答案 2 :(得分:0)

所以,我这样工作:

$chain = Sample::when($status_not_bad, function($query){

   return $query->where('status', '<>', 'bad')
               ->orwhereNull('status');

})

 ->where([$id])
 ->get();