2015-04-05 6 views
6

जब चल रहा Laravel कारीगर टिंकर में निम्नलिखित:कार्बन कार्बन :: अब() संदेश के साथ 'डेटा से पीछे चल रहे' InvalidArgumentException फेंकता

InvalidArgumentException with message 'Trailing data' 

हालांकि, Carbon\Carbon::now():

$article = new App\Article; 
$article->published_at = Carbon\Carbon::now(); 

मैं इस त्रुटि मिलती है इसकी खुद की वापसी पर Carbon उदाहरण अपेक्षित है।

published_at मॉडल में protected $dates = ['published_at']; के माध्यम से कार्बन इंस्टेंस में परिवर्तित किया जाना चाहिए और इसे protected $fillable में भी शामिल किया जाना चाहिए।

कोई भी जानता है कि यहां क्या हो रहा है या मैं कैसे हल कर सकता हूं?


संपादित करें: यही बात टिंकर करने के लिए

संपादित 2 होता है जब मार्गों में एक बंद में भाग गया, तो विशिष्ट नहीं: https://laracasts.com/series/laravel-5-fundamentals/episodes/8

के लिए टिप्पणी में दो बार https://laracasts.com/discuss/channels/general-discussion/carboncarbonnow-giving-error और: दूसरों की तरह लग रहा है इस का सामना कर रहे संपादित करें 3: पहले उदाहरण के रूप में बिल्कुल वही कोड https://laracasts.com/series/laravel-5-fundamentals/episodes/15 में बिना त्रुटि के 15:10 पर उपयोग किया जाता है।

संपादित करें 4: उपरोक्त कोड की लाइन 2 को $article->published_at = Carbon::now()->format('Y-m-d'); पर ठीक से काम करता है और डेटाबेस में संग्रहीत समय भी शामिल है (हालांकि यह सुनिश्चित नहीं है)।

मुझे लगता है कि "पिछला डेटा" पूर्ण डेटाटाइम बहुत लंबा हो सकता है, लेकिन यह अजीब लगता है कि लैरवेल स्वचालित रूप से डेटाटाइम्स के साथ बहुत कुछ करता है (उदाहरण के लिए कार्बन उदाहरणों में स्वतः परिवर्तित) लेकिन यह नहीं।

संपादन 3 में उपयोग हालांकि बेहतर होगा!

+0

नियमित डेटटाइम त्रुटि की तरह दिखता है, हालांकि यह 'अब()' विधि के साथ नहीं होना चाहिए। क्या आपके टाइमज़ोन सेटिंग्स में कुछ गड़बड़ है? टाइम कॉन्फ़िगरेशन कॉन्फ़िगरेशन 'config/app.php' में कैसा दिखता है? – kajetons

+0

टाइमज़ोन डिफ़ॉल्ट है: 'टाइमज़ोन' => 'यूटीसी', ' –

+0

स्रोत कोड को देखकर, ऐसा लगता है कि यह इस लाइन को पिछले नहीं मिलता है 'नया डेटटाइमज़ोन (date_default_timezone_get()); कक्षा निर्माण के दौरान। यदि यह आपको कहीं भी नेतृत्व नहीं करता है तो मुझे संदेह है कि मूल तारीख कार्यों का उपयोग करने के अलावा आप कुछ भी कर सकते हैं। – kajetons

उत्तर

-1

बस इस समारोह को दूर:

public function setPublishedAtAttribute($date){ 
    $this->attributes['published_at']=Carbon::createFromFormat('Y-m-d',$date); 
} 

कि पहले से ही published_at क्षेत्र के लिए प्रारूप तय क्योंकि ...

2

मैं पाया है कि आप createFromFormat उपयोग नहीं करना चाहिए करना चाहिए, जब तक कि दूसरा परमाटर $date है एक कार्बन ऑब्जेक्ट भी है, लेकिन यदि यह नहीं है और यह केवल एक स्ट्रिंग है तो आप केवल

public function setPublishedAtAttribute($date){ 
    $this->attributes['published_at'] = Carbon::parse($date); 
} 

मुझे लगता है कि थोड़ा और अधिक है इसके संबंध में रेड यह पता लगाने के लिए कि यह किस प्रारूप में है, लेकिन यह मेरा अस्थायी कामकाज था।

'वाई-एम-डी' जिस तरह सामने सामने आया है, लेकिन यह डेटाबेस में जा रहा है जो कार्बन थूकता है। मैं एक ही त्रुटि मिली:

[2015-08-16 21:35:57] production.ERROR: exception 'InvalidArgumentException' with message 'Trailing data' in /Users/alexanderkleinhans/laravel/vendor/nesbot/carbon/src/Carbon/Carbon  .php:414 

मैं स्टैक ट्रेस के पहले भाग में विश्वास करते हैं,

Carbon\Carbon::createFromFormat('Y-m-d', Object(Carbon\Carbon))

इंगित करता है कि दूसरा पैरामीटर एक कार्बन ऑब्जेक्ट होना चाहिए, ताकि आप करना पड़ सकता है निश्चित रूप से PHP के रूप में date('Y-m-d') की बजाय फ़ॉर्म पर मामला है।

1

मैं लैराकास्ट ट्यूटोरियल का अनुसरण कर रहा हूं, मुझे एक ही त्रुटि का सामना करना पड़ा। अंततः मुझे पता चला कि इस अपवाद के साथ क्या गलत है।

समारोह में:

public function setPublishedAtAttribute($date) 
{ 
    $this->attributes['published_at'] = Carbon::createFromFormat('Y-m-d', $date); 
} 

देखा कि $ तिथि के लिए मेरी स्वरूप है 'Ymd'

लेकिन, मेरा create.blade.php और edit.blade.php में, प्रपत्र इनपुट है:

{!! Form::input('data-date', 'published_at', date('d-m-Y'), ['class' => 'form-control']) !!} 

देखा कि मेरी दिनांक स्वरूप 'DMY' है।

यही वजह है कि अपार को लार्वेल द्वारा फेंक दिया गया है।

सभी दिनांकों में 'वाई-एम-डी' के रूप में दिनांक प्रारूप बनाने के बाद, अपवाद गायब हो जाता है। आशा है कि ये आपकी मदद करेगा।

0

यदि डेटाबेस इस तरह की एक दशमलव microtime के साथ डेट मूल्य लौटा रहा है यह त्रुटि प्राप्त होगा:

2016-10-06 20:16:23.96034

उन अतिरिक्त दशमलव अंक समस्या है। उनको हटा दें और इसे काम करना चाहिए।

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