2017-10-11 77 views
1

我正在寻找更好的书写方式。我觉得必须有更好的方法?Laravel雄辩 - 更新关系中的字段

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

型号:

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'); 
    } 
} 

顺便说一句。一切正常,只是希望提高我的代码编写:)

+0

模型,请 –

+0

加我的模型的:) –

回答

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

这应该做

编辑:如果你想返回的点击数

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

这也适用与很多更干净! –