Многие привыкли работать с квери-билдером ларавела через статический вызов модели как то так: Model::whereDate($date)->orderBy('order')->first(); и получить ожидаемый результат запроса - одну запись по нужному условию и сортировкой. Однако, метод find() не является частью Fluent Interface квери-билдера и выполняет сразу две ответственности: модифицирует состояние квери-билдера, добавляя в него условие where('id', '=', $id) и возвращает первое найденное значение, т.е. модель.
Таким образом, в выражении Model::find($id)->first(); первая часть Model::find($id) вернёт либо модель либо null и метод first() будет вызван не у квери-билдера, а у модели, что выполнит ещё один запрос к таблице и и вернёт модель на основе первой строки таблицы.
Собственно, в рот ебал я такой Active Record, в котором можно составлять корректные и выполняющиеся выражения, но дающие не очевидный результат. При работе с AR ларика не всегда понятно по контексту относится ли метод к квери-билдеру или к самой модели. Особей эпик фейл в том, что у них есть методы с одинаковыми сигнатурами.