Я новичок в разработке 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? Или это должно быть где-то еще?
Это хорошая практика, что это статический метод?
Вы можете посмотреть на firstOrCreate()
метод из Eloquent для достижения того, что вы делаете в своем примере кода.
Можно включить статические методы в свои модели, особенно в качестве удобных, но старайтесь использовать их экономно и не позволяйте своим моделям становиться слишком толстыми (тестировать статические методы может быть сложно).
Других решений пока нет …