2017-10-11 1 views
1

나는 이것을 쓰는 더 좋은 방법을 찾고있다. 더 좋은 방법이 있어야 할 것 같니?Laravel Eloquent - 관계에있는 필드 업데이트하기

public static function logClick($lid) 
{ 
    $clickId = link::find($lid); 

    $clicks = click::find($clickId->click_id); 

    $c = $clicks->clicks; 
    $c++; 

    $clicks->clicks = $c; 
    $clicks->save(); 

    return $clicks; 
} 

모델 : Btw는

class link extends Model 
{ 
    public function click() 
    { 
     return $this->hasOne('App\click', 'id' ,'click_id'); 
    } 

} 

class click extends Model 
{ 
    public function link() 
    { 
     return $this->hasOne('App\link'); 
    } 
} 

. 당신은 클릭 수

public static function logClick($lId){ 
     $click = click::whereHas('link', function($q)use($lId){ 
      $q->where('id', $lId); 
     }) 
     ->increment('clicks'); 
     return $click->clicks; 
    } 

이 하나 라이너를 반환 할 경우 장점이있다 : 모든 것이 내 코드 작성 :

+0

모델하시기 바랍니다 –

+0

추가 내 모델의 :) 내가 참아 관리하는 것보다 훨씬 더 깨끗 –

답변

1
public static function logClick($lId){ 
    click::whereHas('link', function($q)use($lId){ 
     $q->where('id', $lId); 
    }) 
    ->increment('clicks'); 
} 

이것은

편집해야을 개선하기 위해 찾고, 작동 하나의 쿼리가되는 것. 작동하지 않는 경우 $q->where('id', $lId);에서 확인 $q->where('links_table_name.id', $lId);

+0

, 감사합니다 :) –

1
public static function logClick($lid) 
{ 
    $clicks = link::find($lid)->click; 
    $clicks->increment('clicks'); 
    return $clicks; 
} 
+0

이것은 또한 작동하고 많이 사용할 수 있도록 더 깨끗하게! –