Я использую Laravel со следующими библиотеками:
В модели пользователя у меня скрыт атрибут пароля, поэтому, когда я выполняю GET, он работает должным образом, покажите все атрибуты с наименьшим паролем
Теперь, когда я делаю POST с моделью, созданной из Faker, я не могу отправить пароль атрибута.
Фабрика мошенников
<?php
$factory->define(App\User::class, function (Faker\Generator $faker) {
$role = App\Role::all()->random(1);
return [
'role_id' => $role->id,
'username' => $faker->userName,
'first_name' => $faker->firstName,
'last_name' => $faker->lastName,
'email' => $faker->safeEmail,
'password' => str_random(10),
];
});
Модель пользователя
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
protected $hidden = [ 'password' ];
/* rest of the code */
/* I have a validation rule for password to be required */
Функция пользовательского контекста
<?php
/**
* @When I try to save a valid user
*/
public function iTryToSaveAValidUser()
{
$modelFake = factory('App\User')->make();
$client = new GuzzleHttp\Client();
$data['data'] = $modelFake;
$res = $client->request('POST', url($this->apiURL . '/user'),[ 'json' => $data ]);
}
Я получаю сообщение об ошибке: требуется пароль, есть способ установить скрытый ТОЛЬКО при GET?
Я «исправил» эту проблему с помощью следующего кода, но мне это не нравится
<?php
/**
* @When I try to save a valid user
*/
public function iTryToSaveAValidUser()
{
$modelFake = factory('App\User')->make();
$client = new GuzzleHttp\Client();
$modelArray = $modelFake->toArray();
$modelArray['password'] = str_random(10);
$data['data'] = $modelArray;
$res = $client->request('POST', url($this->apiURL . '/user'),[ 'json' => $data ]);
}
Заранее спасибо!