2017-05-18 37 views
-2

然而,我正在使用Laravel框架,這個答案應該能夠在沒有框架知識的情況下得到回答。我該如何在PHP中重構這個?

我有一個名爲圖像的數據庫表。對於我的網站,每個視頻都有一個主視頻圖像,一個較小的特徵圖像,一幅風景和一幅肖像圖像,gallery_six(這是一張帶有6張圖片的圖片)。每個其他圖像歸類爲normal_image。

表是這樣的:

id | gallery_id | link | alt | video_image | feature_image | gallery_landscape | gallery_portrait | gallery_six | normal_image 

現在,當我創建畫廊,我想插入記錄到數據庫中,但我的代碼只是看起來凌亂,我不確定我怎麼能重構這個。

當我的帖子請求通過控制器,它看起來是這樣的:

array(
    [video_image_link] => 'link' 
    [video_image_alt] => 'alt' 
    [feature_image_link] => 'link' 
    [feature_image_alt] => 'alt' 
    [gallery_landscape_image_link] => 'link' 
    [gallery_landscape_image_alt] => 'alt' 
    [gallery_portrait_image_link] => 'link' 
    [gallery_portrait_image_alt] => 'alt' 
) 

在我的方法,我這樣做:

public static function uploadMainImages($request,$gallery_id) 
{ 
    //upload video image 
    Image::create([ 
     'gallery_id'=>$gallery_id, 
     'link'=>$request['video_image_link'], 
     'alt'=>$request['video_image_alt'], 
     'video_image'=>1, 
     'feature_image'=>0, 
     'gallery_landscape'=>0, 
     'gallery_portrait'=>0, 
     'gallery_six'=>0, 
     'normal_image'=>0, 
    ]); 
    //upload feature image 
    Image::create([ 
     'gallery_id'=>$gallery_id, 
     'link'=>$request['feature_image_link'], 
     'alt'=>$request['feature_image_alt'], 
     'video_image'=>0, 
     'feature_image'=>1, 
     'gallery_landscape'=>0, 
     'gallery_portrait'=>0, 
     'gallery_six'=>0, 
     'normal_image'=>0, 
    ]); 

等等......

有沒有更好的方式來做到這一點,而不需要改變數據庫,只用目前的形式發佈數據?

+1

如果這對你來說看起來很混亂......那麼你還沒有活到足以讓自己成爲程序員! –

+0

這是否意味着它不是凌亂? – virepo

+0

完全沒有!只是讓代碼正常工作。 –

回答

-2
public static function uploadMainImages($request,$gallery_id) { 
    createImg($gallery_id, $request['video_image_link'], $request['video_image_alt'], "video_image"); 
    createImg($gallery_id, $request['feature_image_link'], $request['feature_image_alt'], "feature_image"); 
    createImg($gallery_id, $request['gallery_landscape_image_link'], $request['gallery_landscape_image_alt'], "gallery_landscape"); 
    createImg($gallery_id, $request['gallery_portrait_image_link'], $request['gallery_portrait_image_alt'], "gallery_portrait"); 

}  

function createImg($id, $link, $alt, $type) { 
    $video_image = ($type == "video_image" ? 1 : 0); 
    $feature_image = ($type == "feature_image" ? 1 : 0); 
    $gallery_landscape = ($type == "gallery_landscape" ? 1 : 0); 
    $gallery_portrait = ($type == "gallery_portrait" ? 1 : 0); 
    $gallery_six = ($type == "gallery_six" ? 1 : 0); 
    $normal_image = ($type == "normal_image" ? 1 : 0); 

    Image::create([ 
     'gallery_id'=>$id, 
     'link'=>$link, 
     'alt'=>$alt, 
     'video_image'=> $video_image, 
     'feature_image'=> $feature_image, 
     'gallery_landscape'=> $gallery_landscape, 
     'gallery_portrait'=> $gallery_portrait, 
     'gallery_six'=> $gallery_six, 
     'normal_image'=> $normal_image, 
    ]); 
} 

也許是這樣的。使用該功能創建所需的圖像類型。

+0

請給我舉個例子嗎? – virepo

+0

也許這樣的東西可能是 –

+1

請提供您已經提供的代碼的上下文。 – cybermonkey