[英]Laravel Eloquent - updating a field in a relation
I'm looking for a better way of writing this. 我正在寻找一种更好的编写方式。 I feel like there must be a better way?
我觉得必须有更好的方法吗?
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;
}
Models: 楷模:
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');
}
}
Btw. 顺便说一句。 everything works, just looking to improve my code writing :)
一切正常,只是想改善我的代码编写:)
public static function logClick($lId){
click::whereHas('link', function($q)use($lId){
$q->where('id', $lId);
})
->increment('clicks');
}
This should do 这应该做
EDIT: if you want to return the clicks number 编辑:如果您想返回点击数
public static function logClick($lId){
$click = click::whereHas('link', function($q)use($lId){
$q->where('id', $lId);
})
->increment('clicks');
return $click->clicks;
}
This one liner has the advantage of being a single query. 这一衬里的优点是可以进行单个查询。 In case
$q->where('id', $lId);
如果
$q->where('id', $lId);
doesn't work, make sure to use $q->where('links_table_name.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.