簡體   English   中英

Laravel Eloquent-更新關系中的字段

[英]Laravel Eloquent - updating a field in a relation

我正在尋找一種更好的編寫方式。 我覺得必須有更好的方法嗎?

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

順便說一句。 一切正常,只是想改善我的代碼編寫:)

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM