2015-07-20 3 views
1

Я работаю с Laravel 5.1. Но я не могу запросить базу данных:Laravel 5.1 Не распознает поле метки времени в postgres

Я просто сделаю: User :: all(); на мой UserController

Здесь ошибка:

1/1 
InvalidArgumentException in Carbon.php line 414: 
Trailing data 
in Carbon.php line 414 
at Carbon::createFromFormat('Y-m-d H:i:s', '2015-07-19 20:32:47.313') in Model.php line 2858 
at Model->asDateTime('2015-07-19 20:32:47.313') in Model.php line 2384 
at Model->attributesToArray() in Model.php line 2361 
at Model->toArray() in Collection.php line 871 
at Collection->Illuminate\Support\{closure}(object(User)) 
at array_map(object(Closure), array(object(User), object(User), object(User))) in Collection.php line 873 
at Collection->toArray() in Collection.php line 894 
at Collection->toJson() in Response.php line 66 
at Response->morphToJson(object(Collection)) in Response.php line 44 
at Response->setContent(object(Collection)) in Response.php line 202 
at Response->__construct(object(Collection)) in Router.php line 1225 
at Router->prepareResponse(object(Request), object(Collection)) in ControllerDispatcher.php line 113 
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114 
at ControllerDispatcher->callWithinStack(object(UserController), object(Route), object(Request), 'index') in ControllerDispatcher.php line 69 
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\UserController', 'index') in Route.php line 201 
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134 
at Route->run(object(Request)) in Router.php line 704 
at Router->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Router.php line 706 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671 
at Router->dispatchToRoute(object(Request)) in Router.php line 631 
at Router->dispatch(object(Request)) in Kernel.php line 229 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50 
at VerifyCsrfToken->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54 
at ShareErrorsFromSession->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62 
at StartSession->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Kernel.php line 118 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86 
at Kernel->handle(object(Request)) in index.php line 54 

Это моя модель пользователя

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    // 
} 

Это мой UserController

<?php 

namespace App\Http\Controllers; 

use App\User; 
use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class UserController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 
    public function index() 
    { 
     $users = User::all(); 
     // return view('users.index', compact('users')); 
     return $users; 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return Response 
    */ 
    public function create() 
    { 
     // 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param Request $request 
    * @return Response 
    */ 
    public function store(Request $request) 
    { 
     // 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function show($id) 
    { 
     // 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function edit($id) 
    { 
     // 
    } 

    /** 
    * Update the specified resource in storage. 
    * 
    * @param Request $request 
    * @param int $id 
    * @return Response 
    */ 
    public function update(Request $request, $id) 
    { 
     // 
    } 

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return Response 
    */ 
    public function destroy($id) 
    { 
     // 
    } 
} 

И Это мой Postgres SQL код

DROP TABLE IF EXISTS users CASCADE; 

CREATE TABLE users 
(
    id    serial   NOT NULL, 
    code   varchar(255), 
    login   varchar(50)  NOT NULL, 
    name   varchar(255) NOT NULL, 
    email   varchar(255) NOT NULL, 
    password  varchar(60)  NOT NULL, 
    remember_token varchar(100), 
    created_at  timestamp  NOT NULL, 
    updated_at  timestamp  NOT NULL 
); 

-- Column id is associated with sequence public.users_id_seq 

ALTER TABLE users 
    ADD CONSTRAINT users_pkey 
    PRIMARY KEY (id); 

COMMIT; 

Что случилось? Пожалуйста помоги. Есть ли какой-либо файл конфигурации, который мне не хватает?

+1

чтения о разрешении здесь: http://laravel.io/forum/08-31-2014 -invalidargumentexception-for-postgresql-database – num8er

+1

'at Carbon :: createFromFormat ('Ymd H: i: s', '2015-07-19 20: 32: 47.313')' обратите внимание, что формат не соответствует значению, он включает миллисекунды appart from seconds. Не могли бы вы разместить файл миграции для создания таблицы пользователей? Или вы просто запустили свой собственный SQL? – alariva

+0

Я не использую миграции, просто сырой SQL. Существуют ли какие-либо преимущества при использовании миграции? – juanpscotto

ответ

3

После прочтения этого http://laravel.io/forum/08-31-2014-invalidargumentexception-for-postgresql-database я решил создать модель, которая расширяет класс модели по умолчанию и заменяет getDateFormat собственным кодом.
Поскольку изменение классов в каталоге поставщиков - плохая идея.

Я надеюсь, что это помогает:

class FixedModel extends Illuminate\Database\Eloquent\Model { 
    public function getDateFormat() 
    { 
     return 'Y-m-d H:i:s.u'; 
    } 
} 

class User extends FixedModel {} 
+0

Хорошо, спасибо, я попробую. Но это ошибка? Он должен быть исправлен в версии laravel по умолчанию. – juanpscotto

+0

Я думаю, что это уже исправлено. Но если нет, вы можете использовать его. – num8er

+0

Я думаю, что это не так, потому что я загрузил последнюю версию laravel и обновил ее с помощью композитора – juanpscotto

1

Вы должны объявить $dateFormat в своем классе модели:

protected $dateFormat = 'Y-m-d H:i:s.u'; 
Смежные вопросы