Сейчас мне нужно создать два новых модели: заказ и товар. Было довольно легко заполнить таблицу items фиктивными данными с помощью Faker и Laravel Factory/Seeders. Самая большая проблема возникает при работе с моделью заказа.
Этот малыш связан с компанией с внешним ключом с именем Company_id и пользователя с внешним ключом с именем Sell_id. Поле компании в порядке, проблема связана с моим идентификатором продавца
Этому продавцу нужна роль, связанная с компанией, которую моя фабрика выберет случайным образом это потому, что пользователь не связан с компанией (напрямую), и я не могу просто искать его по идентификатору компании.
Чтобы получить все пользователи, «связанные» с моей компанией, я создал следующую функцию в своей компании модель:
Код: Выделить всё
public function users()
{
$roles = $this->roles;
$users = [];
foreach ($roles as $role) {
foreach ($role->users as $user) {
$user->makeHidden(['pivot']);
array_push($users, $user);
}
}
$users = array_unique_objects($users);
return $users;
}
Эта функция получает каждую роль от компании, а затем передает ее массиву пользователей.
Этот пользовательский помощник: array_unique_objects отслеживает любого повторяющегося пользователя в моем массиве и удаляет их.
Эта функция работает, потому что я тестировал ее на нескольких контроллерах и знаю, что с ней нет проблем. В любом случае мой OrderFactory.php выглядит так:
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/52120490/laravel-5-6-using-model-functions-in-modelfactory[/url]
Мобильная версия