2016-11-24 2 views
0

Я делаю проект в Ларавеле. Я использовал красноречивую модель laravel. Я хочу вставить запись в базу данных с отметками времени.Невозможно вставить значения метки времени при использовании пользовательского метода модели

Вот моя модель '' Provider.php

{ 
    protected $primaryKey = 'provider_id'; 
    protected $table = 'provider'; 

    protected $fillable = [ 
     'organization_name', 
     'email', 
     'website', 
     'mobile', 
     'landline', 
     'password', 
     'added_by' 
    ]; 

    public function cities(){ 

     return $this->belongsToMany('App\City','provider_city','provider_id','city_id'); 
    } 
} 

'City.php'

{ 
    protected $primaryKey = 'city_id'; 
    protected $table = 'city'; 

    protected $fillable = ['state_id','name']; 
} 

и мой метод контроллера заключается в следующем,

{ 
    $city_selection = $request->input('city_selection'); 
    $provider = Provider::findOrFail($provider_id); 
    foreach ($city_selection as $city) { 
     $provider->cities()->attach($city['city_id']); 
    } 

} 

, где city_selection является как показано ниже,

"city_selection": 
    [ 
     { 
     "city_id": 1, 
     "name": "Pune" 
     }, 
     { 
     "city_id": 3, 
     "name": "Bangalore" 
     } 
    ] 

После этого, когда я попытался вставить запись, то всю fileds т.е. provider_id и CITY_ID подал идет правильно в базу данных, но единственная проблема заключается в created_at и updated_at поля по-прежнему нулевые.

Я использовал timpstamps(); при создании файла миграции. Я не знаю, что происходит.

Любые предложения?

ответ

0

Вам нужно добавить даты, чтобы установить мутаторы.

https://laravel.com/docs/5.3/eloquent-mutators#date-mutators

class Provider extends Model 
{ 
    /** 
    * The attributes that should be mutated to dates. 
    * 
    * @var array 
    */ 
    protected $dates = [ 
     'created_at', 
     'updated_at', 
     'deleted_at' 
    ]; 
} 
+0

нет ее не работает :( – Amarja

0

Добавить метку времени в вашей схеме

$table->timestamps(); 

Ваша схема выглядит следующим образом

Schema::create('city', function(Blueprint $table){ 
    $table->increments('id'); 
    $table->integer('state_id')->unsigned(); 
    $table->foreign('state_id')->references('id')->on('state');  
    $table->string('name', 100);   
    $table->timestamps(); 
}); 
+0

Да, я добавил, что – Amarja

0

Добавить следующие столбцы в таблице схемы.

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); 
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP')); 

created_at столбец будет хранить значение, когда запись вставляется и updated_at будет держать обновляется, когда какие-либо изменения в этой записи (Любое изменение в строке). не

Update

Использование ниже кода для обновления в новой миграции

public function up() 
{ 
    Schema::table('table_name', function($table) { 
     $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); 
     $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP')); 
    }); 
} 
+0

Чтобы изменить тип метки времени, созданного файла миграции, но при миграции этого файла я получил ошибку как [Doctrine \ DBAL \ DBALException] Запрошенный тип столбца «timestamp». Любой тип Doctrine, который вы используете, должен быть зарегистрирован в \ Doctrine \ DBAL \ Types \ Type :: addType() Вы можете получить список Известные типы с \ Doctrine \ DBAL \ Types \ Type :: getTypesMap(). I f Эта ошибка возникает во время интроспекции базы данных, тогда вы, возможно, забыли зарегистрировать все типы баз данных для типа Doctrine . Использовать AbstractPlatform ... – Amarja

+0

Эта ошибка возникает, когда вы пытаетесь изменить/обновить любую таблицу. – C2486

+0

Как говорится в сообщении об ошибке, вы можете установить 'Doctrine', если вы хотите обновить любую таблицу или просто отменить свою миграцию, и добавить этот столбец и снова выполнить миграцию. – C2486

Смежные вопросы