Что такое разница между eloquent, где Employee :: query () -> где ('id', '=', 9074) -> get ();и Employee :: query () -> где ('id', 9074) -> get (); - PullRequest
0 голосов
/ 12 июня 2019

Я обычно использовал сильфонный код для запроса чего-либо, используя условие где

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

Но тот же результат, полученный и с сильфонным запросом, тоже

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

На самом деле, в чем главное отличие этих двух запросов

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Разницы нет, = является условием по умолчанию в большинстве операторов, поэтому либо вы передадите его, либо нет, вы получите те же результаты.Вы также можете не звонить query:

Employee::where('id', 9074)->get();
0 голосов
/ 12 июня 2019

Разницы нет. Также вы можете обратиться https://laravel.com/docs/5.8/queries#where-clauses для лучшего понимания

0 голосов
/ 12 июня 2019

Для этого вам нужно проверить функцию Where в построителе запросов

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

Итак, аргументы:

$ column refers to the table column so 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 = 'и' 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 нетдействительные операторы, поэтому он рассматривает как =

...