Метод touch
Метод touch обновляет временные метки текущей модели в базе данных. По умолчанию метод обновляет поле updated_at, но при необходимости можно также обновить поле created_at. Метод возвращает булево значение, указывающее на успешность выполнения операции.
Синтаксис
<?php
Model::touch($timestamps = ['updated_at']);
?>
Пример
Давайте получим модель статьи и обновим её временную метку на текущее время:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use CarbonCarbon;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(1);
$res = $article->touch();
echo $res;
}
}
?>
Результат выполнения кода:
true
Пример
Давайте обновим обе временные метки статьи, передав массив с именами полей:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use CarbonCarbon;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(1);
$res = $article->touch(['created_at', 'updated_at']);
echo $res;
}
}
?>
Результат выполнения кода:
true
Пример
Метод touch также можно использовать в цепочке с другими методами для массового обновления временных меток моделей:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use CarbonCarbon;
class ArticleController extends Controller
{
public function index()
{
Article::where('status', 'published')
->get()
->each(function ($article) {
$article->touch();
});
$res = "Articles touched successfully";
echo $res;
}
}
?>
Результат выполнения кода:
"Articles touched successfully"
Пример
Метод touch автоматически обновляет родительские модели, если у дочерней модели настроены отношения и указано свойство touches в модели:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Comment extends Model
{
protected $touches = ['article'];
public function article()
{
return $this->belongsTo(Article::class);
}
}
?>