اذهب إلى المحتوى
  • 0

ماهو دور created_at وَ updated_at على إطار العمل Laravel؟

سعاد

السؤال

كما أعلم فإن الحقلين created_at وَ updated_at يخصصان لتسجيل تاريخ الإنشاء وتاريخ التحديث لكل سطر على قاعدة البيانات، لكن ما لاحظته أن updatedèat لا يتغير عند تحديث أي معلومة على Laravel، وهذه معلوماتي حول الجدول:

MariaDB [moon]> show columns from users;
+----------------+------------------+------+-----+---------------------+-----------------------------+
| Field          | Type             | Null | Key | Default             | Extra                       |
+----------------+------------------+------+-----+---------------------+-----------------------------+
| id             | int(10) unsigned | NO   | PRI | NULL                | auto_increment              |
| name           | varchar(255)     | NO   |     | NULL                |                             |
| email          | varchar(255)     | NO   | UNI | NULL                |                             |
| password       | varchar(60)      | NO   |     | NULL                |                             |
| remember_token | varchar(100)     | YES  |     | NULL                |                             |
| created_at     | timestamp        | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| updated_at     | timestamp        | NO   |     | 0000-00-00 00:00:00 |                             |
+----------------+------------------+------+-----+---------------------+-----------------------------+

طريقة التغيير على الجدول من خلال المتحكم على Laravel:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

ما هي المشكلة بالأسلوب الذي أتبعه؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

حقلَي created_at وَ updated_at هما لتخزين تاريخ الإنشاء وتحديث تاريخ التحديث عند كل تغيير على قيم الجدول، لكن بعد رؤية البنية المُكوّنة لقاعدة البيانات خاصتك، لاحظت أن حقل created_at به خاصية CURRENT_TIMESTAMP والتي لا يجب أن يتوفر عليها هذا الحقل، مما يعني أنه -حقلcreated_at- سيغير بشكل دوري عند كل تغيير لأنه وببساطة current_timestamp، لذا وجب انتزاع  هذه الميزة منه.

عند القيام بأي تغّير  سطر من جدول في قاعدة البيانات فإنه وبشكل تلقائي سيتم تحديث حقل updated_at، حيث يقوم Elequent بتحديث هذا الحقل.

يندرج الحقلين السابقين ضمن Timestamps، حيث يتم إنشاءهما داخل ملف Migration -كما هو مبين في كود سؤالك- عن طريق :

$table->timestamps();

ويمكن إلغاءهما عن طريق Model من خلال:

public $timestamps = false;

Disabling just created_at or updated_at in a Laravel model

Eloquent: Getting Started

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...