Laravel - Désactiver les mises à Jour Au moment de la mise à jour
Un problème avec la mise à jour en utilisant le générateur de requêtes sur laravel 5. J'ai essayé de désactivé le updated_at mais gardez à défaut.
Voici mon code:
$query = StockLog::where('stock_id', $id)->whereBetween('created_at', $from, $to])->update(['batch_id' => $max + 1]);
J'ai essayé 2 façons:
première à mon modèle j'ai mis:
public function setUpdatedAtAttribute($value)
{
/*do nothing*/
}
Seconde:
$stocklog = new StockLog;
$stocklog->timestamps = false;
$query = $stocklog::where('stock_id', $id)->whereBetween('created_at', [$from, $to])->update([
'batch_id' => $max + 1]);
deux d'entre eux sont en échec. est-il de toute façon à désactivé la updated_at?
Merci d'avance
Comme dans la permanence de l'éteindre? Ou juste pour une requête spécifique?
Salut. Permanent off. @TheShiftExchange
Et quand vous dites "les deux d'entre eux sont en échec" - quelle est l'échec ou l'erreur?
Colonne qui n'a pas trouvé: 1054 Unknown column 'updated_at' in 'field list' @TheShiftExchange
Si vous ne voulez pas avoir à tous alors de son mieux pour ne pas l'avoir dans votre migration. Si vous utilisez des migrations vous avez probablement quelque chose comme
Salut. Permanent off. @TheShiftExchange
Et quand vous dites "les deux d'entre eux sont en échec" - quelle est l'échec ou l'erreur?
Colonne qui n'a pas trouvé: 1054 Unknown column 'updated_at' in 'field list' @TheShiftExchange
Si vous ne voulez pas avoir à tous alors de son mieux pour ne pas l'avoir dans votre migration. Si vous utilisez des migrations vous avez probablement quelque chose comme
$table->timestamps();
Ce que vous pourriez faire est de définir ce public $timestamps = false;
de votre modèle, et annonce la created_at à la mainOriginalL'auteur ssuhat | 2015-05-19
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas vraiment proposer la suppression. Mais si vous voulez utiliser de la façon suivante.
ajouter les éléments suivants à votre modèle:
Cela va désactiver l'horodatage.
MODIFIER: il semble que vous voulez garder le
created_at
domaine, vous pouvez remplacer lagetUpdatedAtColumn
dans votre modèle.Utiliser le code suivant:
Je vais mettre à jour ma réponse.
ouch!! c'est un succès~. Merci beaucoup.
Vous êtes les bienvenus, upvote trop. 🙂
OriginalL'auteur
Dans votre modèle, ajoutez cette méthode:
OriginalL'auteur
La accepté de répondre ne fonctionne pas pour moi, mais m'a conduit dans la bonne direction pour cette solution qui n':
Laravel 5.3
if (! is_null(static::UPDATED_AT) && ...) { $this->setUpdatedAt($time); }
Merci! Et merci de me donner la source de sauvegarde
OriginalL'auteur
Vous pouvez utiliser la suite si vous voulez arrêter définitivement.
Ajoutez ce qui suit à votre modèle...
Et si vous souhaitez continuer à utiliser created_at, puis ajouter le suivant.
OU utiliser de la manière suivante...
Cochez cette laravel.com/docs/5.0/eloquent#timestamps il y a un moyen de bloquer les horodateurs.
OriginalL'auteur
Dans ce cas, il est préférable d'utiliser Générateur de Requêtes au lieu de Éloquent parce que Générateur de Requêtes n'est pas implicitement modifications des horodateurs, des champs. L'utilisation de Générateur de Requêtes aura l'avantage de cibler seul l'opération de mise à jour sans altérer tous de votre modèle.
Dans une ligne que vous pouvez faire:
OriginalL'auteur