我是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);
两个问题:
在User模型中使用createIfNotExists()方法是一种好习惯吗?或者它应该在其他地方?
这是一种静态方法的好习惯吗?
答案 0 :(得分:0)
您可能希望查看Eloquent中的firstOrCreate()
方法,以实现您在示例代码中所做的工作。
在模型中包含静态方法很好,特别是作为方便方法,但请谨慎使用它们,不要让模型变得太胖(测试静态方法很难)。