РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1247 of 1392 menu

Метод raw

Метод raw класса Factory позволяет получить массив сырых атрибутов, сгенерированных фабрикой, без создания записи в базе данных. Он полезен для тестирования, когда нужно получить данные для заполнения форм или проверки валидации, не затрагивая базу данных.

Метод принимает необязательные параметры: массив переопределяемых атрибутов и количество записей. Возвращает массив или коллекцию массивов с данными модели.

Синтаксис

<?php Model::factory()->raw($attributes = [], $count = null); ?>

Пример

Давайте получим массив атрибутов для модели User:

<?php use AppModelsUser; $res = User::factory()->raw(); print_r($res); ?>

Результат выполнения кода:

[ "name" => "John Doe", "email" => "john@example.com", "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi" ]

Пример

Давайте переопределим некоторые атрибуты:

<?php use AppModelsUser; $res = User::factory()->raw([ 'name' => 'Jane Doe', 'email' => 'jane@example.com' ]); print_r($res); ?>

Результат выполнения кода:

[ "name" => "Jane Doe", "email" => "jane@example.com", "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi" ]

Пример

Создадим несколько массивов данных с помощью параметра count:

<?php use AppModelsUser; $res = User::factory()->raw([], 3); print_r($res); ?>

Результат выполнения кода:

[ 0 => [ "name" => "John Doe", "email" => "john1@example.com", "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi" ], 1 => [ "name" => "Jane Smith", "email" => "jane1@example.com", "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi" ], 2 => [ "name" => "Bob Johnson", "email" => "bob1@example.com", "password" => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi" ] ]

Пример

Давайте используем raw для проверки валидации формы:

<?php namespace TestsUnit; use TestsTestCase; use AppModelsUser; use IlluminateFoundationTestingRefreshDatabase; class UserValidationTest extends TestCase { use RefreshDatabase; public function test_user_validation_passes() { $data = User::factory()->raw([ 'name' => 'John Doe', 'email' => 'john@example.com', 'password' => 'password123' ]); $validator = validator($data, [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|min:8' ]); $this->assertTrue($validator->passes()); } public function test_user_validation_fails() { $data = User::factory()->raw([ 'email' => 'invalid-email', 'password' => 'short' ]); $validator = validator($data, [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|min:8' ]); $this->assertTrue($validator->fails()); } } ?>

Смотрите также

  • метод create,
    который создаёт и сохраняет модели в базе данных
  • метод make,
    который создаёт экземпляры моделей без сохранения
  • метод state,
    который добавляет состояния к фабрике
  • метод sequence,
    который задаёт последовательность значений для атрибутов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить