eloquent where Employee::query()->where('id','=',9074)->get(); 有什么区别?和 Employee::query()->where('id',9074)->get();

Whata is the difference between eloquent where Employee::query()->where('id','=',9074)->get(); and Employee::query()->where('id',9074)->get();

我通常使用波纹管代码使用 where 条件查询任何内容

Employee::query()->where('id',9074)->get();

但是波纹管查询的输出相同 return

Employee::query()->where('id','=',9074)->get();

实际上这两个查询之间的主要区别是什么?

没有区别,=是大多数语句的默认条件,所以无论你通过它还是不通过它都会导致相同的结果。您也可以避免调用 query:

Employee::where('id', 9074)->get();

为此,您需要检查查询生成器的 Where 函数

https://github.com/laravel/framework/blob/5.8/src/Illuminate/Database/Query/Builder.php#L596

所以参数是

$column refers to the table column 所以 id

$operator = null 指的是您可以在此处列出运算符的运算符 https://github.com/laravel/framework/blob/5.8/src/Illuminate/Database/Query/Builder.php#L181

$value = null Refers to the column Value so '9074'

$boolean = 'and' Used for Chaning

因此,当您传递 laravel 时,将检查函数的第二个参数并检查该值是否为有效运算符,如果未找到有效运算符,它将视为 = 你可以在这里看到它

https://github.com/laravel/framework/blob/5.8/src/Illuminate/Database/Query/Builder.php#L622

Employee::query()->where('id',9074)->get();

因为 9074 不是有效的运算符所以它被认为是 =

没有区别。您也可以参考https://laravel.com/docs/5.8/queries#where-clauses以更好地理解