with updateorcreate meaning delete php laravel laravel-4 eloquent models

php - updateorcreate - Herencia en el marco de Laravel



updateorcreate laravel (2)

¿Es posible usar la herencia en el modelo de Laravel? Yo explico:

Es posible ejecutar un modelo, que extiende una clase elocuente?

class A extends Eloquent { } class B extends A { }

A e B también son 2 tablas diferentes y B tiene A_id como clave externa y otros campos. ¿Cómo podría ser el constructor de la clase B? ¿es una solución ragionable o mejor uso hasOne relación?

no todos los objetos A son también objetos B Es. usuario y profesor

Gracias


Resuelvo con

class A extends Eloquent { protected $table = ''a''; } class B extends A { protected $table = ''b''; protected $primaryKey = ''a_id''; }

pero en la función principal:

$f = B::find(1);
$f->method();

donde el método () es un método de clase A, el sistema me da un error mysql:

select * from C where C. B_id = 1

el error es B_id. Debería ser A_id porque el método se aplica desde subobjeto de la clase, no desde la clase


Tengo dificultades para entender los detalles adicionales, pero en respuesta a la pregunta real: sí, es posible ampliar los modelos Eloquent.

<?php class User extends /Eloquent { protected $table = ''users''; } class Student extends User { protected $table = ''students''; }

Sin embargo, ten en cuenta que cualquier método (como relaciones, ámbitos, etc.) se propagará a la clase extendida. Si no se desea, cree una clase base que tenga el mínimo de lo que necesita y luego subclasifique con sus tipos específicos, es decir, Student , Administrator , etc.

Otro enfoque es usar interfaces. Entonces, si sabes que los modelos necesitan los mismos atributos, dirán que tienen diferentes relaciones; entonces puedes crear una interfaz para agregar esas restricciones:

<?php interface UserInterface { public function getName(); } class User extends /Eloquent implements UserInterface { protected $table = ''users''; public function getName() { return $this->name; } } class Student extends /Eloquent implements UserInterface { protected $table = ''students''; public function getName() { return $this->name; } public function courses() { return $this->belongsToMany(''Course''); } public function grades() { return $this->hasMany(''Grade''); } }