我正在Laravel 5.5项目中构建一些测试。
在我的GalleryFactory中我需要生成一个'链接',我已经在我的GalleriesController函数中编写了这个代码,就像这样;
private function generateUrlLink()
{
$generatedLink = str_random(8);
$existingGalleryWithGeneratedLink = Gallery::where('link', $generatedLink)->first();
while (!is_null($existingGalleryWithGeneratedLink)) {
$generatedLink = str_random(8);
$existingGalleryWithGeneratedLink = Gallery::where('link', $generatedLink)->first();
}
return $generatedLink;
}
我不想在控制器和工厂中编写这个代码两次,因为有一天我可能想要修改它,所以我想知道最好的解决方法是什么?
任何帮助都会很棒。
感谢。
答案 0 :(得分:1)
最好的方法是在eloquent模型中编写此函数而不是控制器,然后从模型中调用函数。
public static function generateUrlLink()
{
$generatedLink = str_random(8);
$existingGalleryWithGeneratedLink = Gallery::where('link', $generatedLink)->first();
while (!is_null($existingGalleryWithGeneratedLink)) {
$generatedLink = str_random(8);
$existingGalleryWithGeneratedLink = Gallery::where('link', $generatedLink)->first();
}
return $generatedLink;
}
希望这有效。