From ace7256f8a7cd953e34e81c68279313064c6a05b Mon Sep 17 00:00:00 2001 From: ReWiG Date: Tue, 15 Jul 2025 13:53:43 +0300 Subject: [PATCH] Update eloquent.md --- eloquent.md | 59 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/eloquent.md b/eloquent.md index f462b858..4543ad1d 100644 --- a/eloquent.md +++ b/eloquent.md @@ -1,5 +1,5 @@ --- -git: d973103c480300debe835bf11748435e5af58bfb +git: 0790883cb65b64c49bcdca57b5d114bf2ccb5abb --- # Eloquent · Начало работы @@ -368,9 +368,9 @@ Model::preventSilentlyDiscardingAttributes(! $this->app->isProduction()); Метод Eloquent `all` вернет все результаты из таблицы модели. Однако, поскольку каждая модель Eloquent служит [построителем запросов](/docs/{{version}}/queries), вы можете добавить дополнительные условия к запросам, а затем вызвать метод `get` для получения результатов: $flights = Flight::where('active', 1) - ->orderBy('name') - ->take(10) - ->get(); + ->orderBy('name') + ->take(10) + ->get(); > [!NOTE] > Поскольку модель Eloquent является построителем запросов, вам следует просмотреть все методы, предлагаемые [построителем запросов](/docs/{{version}}/queries). Вы можете использовать любой из этих методов при написании запросов Eloquent. @@ -710,8 +710,8 @@ Eloquent также предлагает поддержку расширенны Обновления также могут выполняться для моделей, соответствующих указанному запросу. В этом примере все рейсы, которые активны и имеют пункт назначения в Сан-Диего, будут помечены как задержанные: Flight::where('active', 1) - ->where('destination', 'San Diego') - ->update(['delayed' => 1]); + ->where('destination', 'San Diego') + ->update(['delayed' => 1]); Метод `update` ожидает массив пар ключей и значений, представляющих столбцы, которые должны быть обновлены. Метод `update` возвращает количество затронутых строк. @@ -889,10 +889,6 @@ Eloquent содержит методы `isDirty`, `isClean` и `wasChanged` дл $flight->delete(); -Вы можете вызвать метод `truncate`, чтобы удалить все записи базы данных, связанные с моделью. Операция `truncate` также сбрасывает все автоинкрементные идентификаторы в связанной с моделью таблице: - - Flight::truncate(); - #### Удаление существующей модели по ее первичному ключу @@ -920,6 +916,10 @@ Eloquent содержит методы `isDirty`, `isClean` и `wasChanged` дл $deleted = Flight::where('active', 0)->delete(); +Чтобы удалить все модели в таблице, необходимо выполнить запрос без добавления каких-либо условий: + + $deleted = Flight::query()->delete(); + > [!WARNING] > События модели Eloquent `deleting`, и `deleted` при массовом удалении не будут инициированы для удаленных моделей. Это связано с тем, что модели фактически не извлекаются при выполнении оператора `delete`. @@ -1003,8 +1003,8 @@ Eloquent содержит методы `isDirty`, `isClean` и `wasChanged` дл use App\Models\Flight; $flights = Flight::withTrashed() - ->where('account_id', 1) - ->get(); + ->where('account_id', 1) + ->get(); Метод `withTrashed` также используется в запросе, использующем [отношения](/docs/{{version}}/eloquent-relationships): @@ -1016,8 +1016,8 @@ Eloquent содержит методы `isDirty`, `isClean` и `wasChanged` дл Метод `onlyTrashed` будет извлекать **только** программно удаленные модели: $flights = Flight::onlyTrashed() - ->where('airline_id', 1) - ->get(); + ->where('airline_id', 1) + ->get(); ## Периодическое удаление (pruning) старых записей @@ -1356,6 +1356,37 @@ Eloquent также позволяет вам определять глобал $users = User::ofType('admin')->get(); + +### Ожидаемые атрибуты + +Если вы хотите использовать диапазоны для создания моделей, имеющих те же атрибуты, что и те, которые используются для ограничения диапазона, вы можете использовать метод `withAttributes` при построении запроса диапазона: + + withAttributes([ + 'hidden' => true, + ]); + } + } + +Метод `withAttributes` добавит условия `where` к запросу, используя заданные атрибуты, а также добавит заданные атрибуты к любым моделям, созданным с помощью диапазона: + + $draft = Post::draft()->create(['title' => 'In Progress']); + + $draft->hidden; // true + ## Сравнение моделей