2014-12-09 7 views
5

मैं "time_created" कॉलम के रूप में डेटाबेस में नया रिकॉर्ड डालने के दौरान वर्तमान सिस्टम समय डेटाबेस में जोड़ना चाहता हूं। PHP के समय() फ़ंक्शन में yii2 में समर्थन नहीं है। मैं yii2 विशिष्ट समय समारोह चाहता हूं जो मुझे वर्तमान टाइमस्टैम्प को बचाने में मदद करेगा। कोई जानता है????डेटाबेस में वर्तमान टाइमस्टैम्प कैसे जोड़ें। प्रारूप क्या है?

+2

अन्य db के बारे में सुनिश्चित नहीं हैं, लेकिन अगर आप कर रहे हैं MySQL का उपयोग करके आप एक टाइमस्टैम्प कॉलम अपडेट स्वयं कर सकते हैं, http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html – Alex

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! कृपया देखें ["प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), जहां सर्वसम्मति है "नहीं, उन्हें नहीं करना चाहिए"। –

उत्तर

9

वाईआई 2 के लिए इसका विशेष व्यवहार है। बस इसे मॉडल से संलग्न करें। behaviors() विधि करने के लिए अपने मॉडल को यह करें:

use yii\behaviors\TimestampBehavior; 
use yii\db\Expression; 

public function behaviors() 
{ 
    return [ 
     // Other behaviors 
     [ 
      'class' => TimestampBehavior::className(), 
      'createdAtAttribute' => 'time_created', 
      'updatedAtAttribute' => false, 
      'value' => new Expression('NOW()'), 
     ], 
    ]; 
} 
6

तुम भी Yii2 के formatter नीचे की तरह उपयोग कर सकते हैं:

Yii::$app->formatter->asTimestamp(date('Y-d-m h:i:s')); //1410488596 
Yii::$app->formatter->asDatetime(date('Y-d-m h:i:s')); //Sep 12, 2014, 2:21:56 AM 
5

हो सकता है कि यह पुराना है, लेकिन यह किसी और कुछ एक मदद मिल सकती है। अपने मॉडल में नीचे कोड जोड़ें। सुनिश्चित करें कि आप अपनी विशेषता में createdAttribute बदल दें। तुम भी शामिल करने के लिए है:

use yii\behaviors\TimestampBehavior; 
use yii\db\Expression; 

public function behaviors() 
{ 
    return [ 
     [ 
      'class' => TimestampBehavior::className(), 
      'createdAtAttribute' => 'entry_date', 
      'updatedAtAttribute' => false, 
      'value' => new Expression('NOW()'), 
     ], 
    ]; 
} 
+0

यह मेरे उत्तर से अलग कैसे है? – arogachev

+0

@arogachev क्योंकि यह उत्तर अधिक पठनीय है और आपके से पूर्ण दिखता है। –

3

आप उपयोग कर सकते हैं Yii \ db \ अभिव्यक्ति एसक्यूएल समारोह में प्रदर्शन करने के लिए

<?php 
use yii\db\Expression; 

$model->time_created = new Expression('NOW()'); 
$model->save(); 
0

आप सीधे शब्दों के रूप में PHP के date() फ़ंक्शन का उपयोग कर सकते हैं - date('Y-m-d H:i:s');

0

टाइमस्टैम्प जोड़ने के कई तरीके हैं, मैं टाइमज़ोन से निपटने के लिए यूनिक्स टाइमस्टैम्प का उपयोग करने का सुझाव देता हूं। उदाहरण के लिए Google एसक्यूएल उदाहरणों में आप टाइमज़ोन सेट नहीं कर सकते हैं, लेकिन ऑफसेट, जिसका मतलब है कि आपको गर्मियों/सर्दियों के समय की वजह से वर्ष में दो बार ऑफसेट अपडेट करना होगा। कि के रूप में कोई उल्लेख आप भी व्यवहार का उपयोग कर सकते के लिए:

public function behaviors() 
{ 
    return [ 
     [ 
      'class' => AttributeBehavior::className(), 
      'attributes' => [ 
       ActiveRecord::EVENT_BEFORE_INSERT => 'entry_date', 
      ], 
      'value' => function ($event) { 
       return time(); 
      }, 
     ], 

    ]; 
} 

या आप बस सिर्फ डालने से पहले जोड़ सकते हैं, $model->entry_date=time(); की तरह, लेकिन जैसा कि आप हर INSERT पर ऐसा करेंगे तो व्यवहार बेहतर विकल्प हैं।

और निश्चित रूप से आप स्वरूपित तारीख पढ़ना चाहते हैं, तो आप उपयोग कर सकते हैं:

\Yii::$app->formatter->asDate($model->entry_date); 

asDate फ़ॉर्मेटर के लिए, आप यहाँ पढ़ सकते हैं: http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asDate()-detail

संबंधित मुद्दे