2014-03-07 84 views
1

我不想在我稱之爲修改對象的時候,我正在查看這個對話框,修改是自動完成的。Laravel修改模型,檢索數據後

在控制器,我有以下幾點:

$candidate = Candidate::where('slug', '=', $slug)->first(); 

然後我做的:

if (!is_null($candidate->social_profiles) && !empty($candidate->social_profiles)) { 
    $candidate->social_profiles = unserialize($candidate->social_profiles); 

    foreach ($candidate->social_profiles as $key => $value) { 
     $candidate->{$key} = $value; 
    } 

    $candidate->social_profiles = null; 
} 

現在,我正在尋找一種方式,做最後的一部分,非常裏面擁有Candidate模型,所以每當候選人被檢索時,它都會執行上面的代碼,這樣我就不必複製上面的最後一部分,無論我在哪裏獲得候選人。

問題是,我不知道在哪裏這樣做。 $this__construct只包含在類中定義的數據,它基本上是一個空模型。還有什麼?

回答

0

這可能是個人喜好,但我會創建一個具有方法findBySlug一個CandidateRespository類(或任何你想將它命名):

public function findBySlug($slug) 
{ 
    $candidate = Candidate::where('slug', '=', $slug)->first(); 

    if (!is_null($candidate->social_profiles) && !empty($candidate->social_profiles)) { 
     $candidate->social_profiles = unserialize($candidate->social_profiles); 

     foreach ($candidate->social_profiles as $key => $value) { 
      $candidate->{$key} = $value; 
     } 

     $candidate->social_profiles = null; 
    } 

    return $candidate; 
} 

使用扶養注射傳遞倉庫到你的控制器然後使用調用它:

$candidate = $this->candidate->findBySlug($slug); 

這裏的一些閱讀:http://laravel.com/docs/ioc & http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/

希望有所幫助。