2014-04-13 18 views
9

Tôi có thêm một trường trên cơ sở dữ liệu trên created_atupdated_atTIMESTAMP tên trường là ngày.Dữ liệu không mong muốn được tìm thấy trong khi lưu trên eloquent/Laravel

Vì vậy, tôi đã ghi đè phương pháp getDates() trên mô hình hùng hồn của tôi vì tôi muốn trường đó được khởi tạo từ Carbon.

public function getDates() 
{ 
    return ['date','created_at','updated_at']; 
} 

Nhưng khi tôi đi để tạo ra một kỷ lục mới trên cơ sở dữ liệu nó ném cho tôi một ngoại lệ: tìm thấy

InvalidArgumentException dữ liệu bất ngờ. Đã tìm thấy dữ liệu không mong muốn. Đã tìm thấy dữ liệu không mong muốn.

Ps: giá trị được gửi từ các hình thức là ở định dạng EU: d-m-Y h:i

Tôi không biết làm thế nào tìm ra vấn đề này bất cứ đề nghị được đánh giá cao

+0

Bạn có giải pháp trong câu trả lời của tôi bây giờ. –

Trả lời

10

Bạn mảng trở về từ getDates được sáp nhập với một dafault kết quả là:

['created_at','updated_at','deleted_at','date','created_at','updated_at']; 

nên chỉ sử dụng 'date' ở đó và nên được tốt.


Thử thiết lập trình tắt cho 'ngày' để chuyển đổi dữ liệu từ đầu vào sang định dạng dấu thời gian. Lỗi bạn nhận được không phải là trên Eloquent nhưng Carbon.

public function setDateAttribute($value) 
{ 
    $this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value); 
} 

Cũng có sai lầm trong các tài liệu, như getDates định nghĩa accessors ngày, không mutators ..

+0

Đã cố gắng nhưng dường như không phải là vấn đề này. Dù sao không được sáp nhập nhưng bị ghi đè. – Fabrizio

+0

Vâng, tệ của tôi. Tôi vừa mới nhận ra vấn đề là gì. Kiểm tra chỉnh sửa. –

+0

Vâng, đây là câu trả lời đúng tôi đã thử theo cách này để xem nó có hoạt động hay không. :) Cảm ơn bạn đời. – Fabrizio

0

Mặc dù vấn đề một tuổi của mình và tôi đặt đầu vào của tôi cho bất cứ ai vẫn đang gặp khó khăn ngay cả sau khi thiết lập các mutator.

Nếu phần tử html ngày đầu vào vượt qua ngày ở định dạng nguyên tử (1975-12-25T14: 15: 16-05: 00) thì mutator ngày sẽ không giúp đỡ. Bạn cần áp dụng sửa lỗi sau trong lớp Illuminate \ Database \ Eloquent \ Model ở dòng # 2848 để làm cho nó hoạt động (trong laravel # 5).

$ value = Carbon :: createFromFormat (định dạng $, (new DateTime ($ value)) -> định dạng ('Y-m-d H: i: s'));

1

Hãy thử điều này:

Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);  
Các vấn đề liên quan