LARAVEL如何获取命名文件的自动增量ID的ID值?

时间:2014-08-16 09:40:03

标签: laravel laravel-4

我正在尝试将上传的文件重命名为与表Slider的ID相同的唯一名称

public function postAddSlider(){
    $title = Input::get('title');
    $image = Input::file('image');
    $link = Input::get('link');
    $description = Input::get('description');

    $filename = $image->getClientOriginalName(); //<-- i want to change that filename to be id of table Slider
    $uploadSuccess = Input::file('image')->move(base_path().'/public/assets/slider/', $filename);

    if($uploadSuccess){
        $slider = Slider::create(array(
            'image' =>  $uploadSuccess->getRealPath(),
            'title' => $title,
            'link' => $link,
            'description' => $description
        ));

        if($slider){
            return Redirect::route('slider-add-get')
                    ->with('message','Slider Added Successfully');
        }
    }
    else{
        return Redirect::route('slider-add-get')
                ->with('message','File Upload Error');
    }
}

或者您是否有其他解决方案来重命名唯一名称?

1 个答案:

答案 0 :(得分:1)

我不知道你的架构是什么样的,但是如果你想得到一个模型的id,你必须先保存它。

也许你可以这样做:

$slide = new Slide();
$slide->title = Input::get('title');
$slide->url = $temporaryurl;
...etc...
$slide->save();

//once the slide is saved, we can access its id
$slide->url = 'slide-' . $slide->id . $file->getClientOriginalExtension();
$slide->save(); //updates the new url

或者,如果您只是想生成唯一的文件名,您可以使用原始文件名+时间戳...可能会导致重复...但非常不可能(这2张图片将上传同一个文件名在同一秒内)。

或者,或许,幻灯片标题(删除了非法字符,空格替换为破折号等),加上时间戳。