2015-07-02 25 views
5

Tôi đang tạo một dịch vụ web trong Laravel đang trả về JSON.Laravel: Hành vi bất ngờ của ngày trong phản hồi JSON

Tôi đã tạo ra một mô hình Account như vậy:

class Account extends Eloquent { 

    // The database table used by the model. 
    // (If not defined then lowercase and plural of class name is consider as a table name) 
    protected $table = "account"; 

    // define which column can be mass assign 
    protected $fillable = array("user_id", "account_group_id", "generated_by", "image", "name", 
           "address", "zip", "area_id", "mobile", "email", "phone", "fax", 
           "website", "pan", "cst", "tin", "ecc", "iesc", "transport", 
           "other", "outstanding", "cform", "status", "mitp"); 

    // To prevent column from mass assignment. 
    protected $guarded = array('id'); 

    // Change Variable for CREATED_AT and UPDATED_AT 
    const CREATED_AT = 'itp'; 
    const UPDATED_AT = 'utp'; 
} 

Tôi lấy lĩnh vực từ Account sử dụng user_id và trở về JSON qua Response::json() trong điều khiển của tôi

$accountData = Account::select('name', 'status', 'id', 'user_id', 'utp')->where('user_id', Auth::id())->first(); 
$return = array(
       'result' => 'success', 
       'msg' => 'Login Successfully.', 
       'data' => $accountData 
       ); 
return Response::json($return); 

Trong đó, utp cư xử như mong đợi và trả về một ngày dưới dạng một chuỗi:

{ 
    "result": "success", 
    "msg": "Login Successfully.", 
    "data": { 
    "name": "Demo", 
    "status": 0, 
    "id": 143, 
    "user_id": 207, 
    "utp": "2015-07-01 18:38:01" 
    } 
} 

Tuy nhiên nếu tôi mất mỗi giá trị riêng rẽ với các mô hình tài khoản như sau:

$return = array(
    'result' => 'success', 
    'msg' => 'Login Successfully.', 
    'data' => $accountData['user_id'], 
    'account_id' => $accountData['id'], 
    'utp' => $accountData['utp'], 
    'usertype' => 'account', 
    'status' => $accountData['status'] 
); 

Sau đó, điều này mang lại một số hành vi bất ngờ từ utp

{ 
    "result": "success", 
    "msg": "Login Successfully.", 
    "data": 207, 
    "account_id": 143, 
    "utp": { 
    "date": "2015-07-01 18:38:01", 
    "timezone_type": 3, 
    "timezone": "Asia\\/Kolkata" 
    }, 
    "usertype": "account", 
    "status": 0 
} 

Tại sao điều này xảy ra với trường timestamp của tôi?

Trả lời

5

utp là một ví dụ Carbon\Carbon. Model::toJson (thực tế là Model::toArray, nhưng cả hai đều được sử dụng) xử lý thường và nối tiếp một ngày với định dạng ISO3601-ish thông thường

Đối với hành vi mong đợi, bạn cần phải định dạng cá thể Carbon.

"utp" => $accountData['utp']->format("Y-m-d H:i:s"), 

Ngoài ra, bỏ nó vào một chuỗi

"utp" => (string) $accountData['utp'], 
Các vấn đề liên quan