2016-08-27 99 views
0

的當前日期/時間值在我的Laravel 5的項目,我想增加的若干意見,當訪客來/刷新產品網頁像:Laravel 5:更新記錄不改變的updated_at領域

$rds = Product::whereId($id)->first(); 
$rds->hits++; 
$rds->save(); 

問題是,該字段:updated_at自動更新,這不是我想要的,因爲我想只更改字段:命中,而不是update_at字段。

如果我設置$ rds-> updated_at = false;該字段更新爲'0000-00-00 00:00:0'。

你能建議如何防止updated_at字段自動更改爲只有某些功能?

最好的問候,那仁

回答

0

設置時間戳爲false以禁用更新created_at和的updated_at。

$rds = Product::whereId($id)->first(); 
$rds->hits++; 
$rds->timestamps = false; 
$rds->save(); 

你可以看看由Laravel代碼在這裏performUpdate方法: \Illuminate\Database\Eloquent\Model.php

 // First we need to create a fresh query instance and touch the creation and 
    // update timestamp on the model which are maintained by us for developer 
    // convenience. Then we will just continue saving the model instances. 
    if ($this->timestamps && Arr::get($options, 'timestamps', true)) { 
     $this->updateTimestamps(); 
    } 
+0

它的工作原理現在好了。謝謝 – Naren

+0

如何使用$ rds->點擊++與select連接兩個表?比方說,我想要與表格公司合作表格產品,並且我希望每次訪問者查看產品頁面時都更新表格產品的匹配字段。 你能提供完整的編碼嗎? – Naren

0

只要把下面的模型,可以將禁用時間戳

公共$時間戳= FALSE;

或附加到方法的主體,下面

$ RDS->時間戳= FALSE;

注意:第一個將永久禁用時間戳,而另一個將不允許更新您編輯的時間戳。

+0

非常感謝你的回答:) – Naren

1

它不是$rds->updated_at = false,應該$rds->timestamps = false

+0

感謝這麼多的快速回答 – Naren