hasmany español consultas php mysql laravel laravel-4

php - consultas - hasmany laravel español



Cambiar el nombre de Laravel''s created_at y updated_at (3)

¿Puedo mapear las marcas de tiempo de Laravel desde:

created_at para post_date y post_date_gmt ?

updated_at to post_modified y post_modified_gmt ?

Estoy migrando una aplicación de Wordpress a Laravel.

Estoy accediendo a una copia de la base de datos de Wordpress usando Laravel. La versión en vivo de la base de datos todavía está en uso, así que no quiero cambiar el esquema.

La tabla Posts tiene post_date , post_date_gmt , post_modified y post_modified_gmt , pero Laravel espera created_at y updated_at .

¿Hay alguna forma de cambiar los nombres de las columnas que busca Laravel?

Me gustaría que Laravel actualice las marcas de tiempo de todas las columnas que ya están allí.


La respuesta aceptada puede ocasionar problemas con la actualización de las marcas de tiempo, lamentablemente.

Será mejor que anule las condenas en su modelo:

const CREATED_AT = ''post_date''; const UPDATED_AT = ''post_modified'';

entonces los métodos getCreatedAtColumn y getUpdatedAtColumn devolverán post_date y post_modified respectivamente, pero no harán ningún daño.

Para las otras columnas necesita usar eventos como @Oni sugerido.


Podría intentar usar los getters de atributos y getters:

class Post extends Eloquent { public function getCreatedAtAttribute() { return $this->attributes[''post_date'']; } public function setCreatedAtAttribute($value) { $this->attributes[''post_date''] = $value; // this may not work, depends if it''s a Carbon instance, and may also break the above - you may have to clone the instance $this->attributes[''post_date_gmt''] = $value->setTimezone(''UTC''); } }

No sé si esto funcionará, pero podrían intentarlo. Sin duda una base para seguir tal vez, tendrás que jugar con ella.


Si nos fijamos en la fuente de la clase Eloquent

https://github.com/illuminate/database/blob/4.2/Eloquent/Model.php#L223-L235

Debería poder cambiar estos nombres de columna con bastante facilidad anulando esas constantes.

<?php class YourModel extends Eloquent { /** * The name of the "created at" column. * * @var string */ const CREATED_AT = ''post_date''; /** * The name of the "updated at" column. * * @var string */ const UPDATED_AT = ''post_modified''; }

En cuanto a la versión _gmt de esas marcas de tiempo, es posible que desee examinar los events . Aquí hay un buen comienzo

http://driesvints.com/blog/using-laravel-4-model-events