Является ли хорошей практикой использование статических методов в моделях Laravel?

Я новичок в разработке Laravel и MVC в целом.

У меня есть метод, который импортирует данные из файла CSV. Каждая строка представляет пользователя и документ, связанный с пользователем.

Функция импорта проверяет, существует ли пользователь (на основе поля для входа в CSV) и, если нет, создает нового пользователя. Затем он создает новый UserDocument для этого пользователя.

У меня есть метод createIfNotExists () в моей модели пользователя:

public static function createIfNotExists($username, $password)
{
$userId= DB::table('users')->where('login', $username)->pluck('id');

if(is_null($userId))
{
$user = new User();
$user->setHasher(new Cartalyst\Sentry\Hashing\NativeHasher);
$user->login = $username;
$user->email = $username;
$user->password = $password;
$user->save();

return $user;

}

return User::find($userId);
}

Я вызываю этот метод в методе импорта CSV следующим образом:

$user= User::createIfNotExists($userLogin, $userPassword);

Два вопроса:

  • Является ли хорошей практикой использование метода createIfNotExists () в модели User? Или это должно быть где-то еще?

  • Это хорошая практика, что это статический метод?

1

Решение

Вы можете посмотреть на firstOrCreate() метод из Eloquent для достижения того, что вы делаете в своем примере кода.

Можно включить статические методы в свои модели, особенно в качестве удобных, но старайтесь использовать их экономно и не позволяйте своим моделям становиться слишком толстыми (тестировать статические методы может быть сложно).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]