Laravel $ touch для обновления updated_at - PullRequest
0 голосов
/ 13 июня 2019

У меня есть сомнения относительно $touch в Ларавеле.Я понял, что $touch может использоваться для обновления модели или отношений без обновления каких-либо других столбцов.Но я пытаюсь обновить таблицу пользователей, какие бы изменения не произошли в таблице, связанной с другими пользователями.Это можно создать, обновить или удалить.В моем случае $touch не работает с отношением для удаления.

//touch
protected $touches = ['somerelation'];

//relationship
public function somerelation(){
    return $this->belongsTo('someModel', 'key_id');
}

public setSomeRelationAttribute(){
  $this->someRelation()->delete();
}

Это то, что я пытался.updated_at у пользователей отлично работает с созданием и обновлением.Но не для удаления.

Это потому, что касание применимо только для добавления и обновления?

Я уверен, что касание не работает для удаления во всех отношениях, проверяя значения БД.

Мне нужно убедиться, что мои выводы верны, что касание не работает для удаления

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Если вы звоните touch() на существующей модели, например:

$post = Post::find(1);
$post->touch(); // this updates just this model

Таким образом, удаление не может работать с удаляемой строкой.

Нов родительской модели это работает, так что, например, у вас есть сообщение с комментариями, в модель комментариев вы добавляете:

protected $touches = [ 'post' ];

public function post()
{
    return $this->belongsTo(Post::class);
}

Даже если вы удалите комментарий, это обновит сообщение. Здесь - это реализация метода удаления, в частности, линии, которая будет касаться родительских моделей.

- РЕДАКТИРОВАТЬ

Улучшить ваши отношения с одним из следующих способов:

return $this->belongsTo('App\User');

// or

return $this->belongsTo(User::class);
0 голосов
/ 13 июня 2019

Для метода delete () в Eloquent Model отношения в $ touch будут обновлены.

Если он вызывает, delete () в построителе запросов , он не затронет отношения в $ touch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...