Laravel从模型工厂调用控制器功能

时间:2017-10-28 01:24:19

标签: php laravel laravel-5

我正在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;
}

我不想在控制器和工厂中编写这个代码两次,因为有一天我可能想要修改它,所以我想知道最好的解决方法是什么?

任何帮助都会很棒。

感谢。

1 个答案:

答案 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;
}

希望这有效。