2016-08-27 9 views
0

В моем проекте Laravel 5, я хотел бы увеличить число просмотров, когда посетитель пришел/обновить на странице продукта, как:Laravel 5: Обновление записи без изменения текущей даты/значения времени updated_at полей

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

Проблема в том, что поле: updated_at автоматически обновляется, что совсем не то, что я хочу, потому что я хотел бы изменить только поле: hits, а не update_at.

Если я установил $ rds-> updated_at = false; поле обновляется до 0000-00-00 00: 00: 0 '.

Не могли бы вы посоветовать, как предотвратить автоматическое изменение поля updated_at для определенной функции?

С наилучшими пожеланиями, Naren

ответ

0

Установите метки в ложь, чтобы отключить обновляя 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-> hits ++ с выбором join two tables? Предположим, я хочу присоединиться к Table Products с табличными компаниями, и я хочу обновлять поле хитов таблицы Products каждый раз, когда посетитель приходит, чтобы просмотреть страницу продукта. Не могли бы вы предоставить полную кодировку? – Naren

0

Проще говоря ниже в модели было бы отключить TIMESTAMP

публика $ метки времени = ложь;

или добавить к телу метода, ниже

$ РДС> метки времени = ложь;

NB: Первый будет отключать временные метки навсегда, в то время как другой не позволит обновлять метку времени при редактировании.

+0

Большое вам спасибо за ваш ответ :) – Naren

1

это не $rds->updated_at = false, должно быть $rds->timestamps = false

+0

Спасибо большое за быстрый ответ – Naren