Pregunta

Si tengo un modelo elocuente definido en mi solicitud, que tiene una serie de relaciones diferentes configuradas con otros tipos de modelos, ¿cómo puedo obtener información todas esas relaciones sin saber nada más sobre el modelo con el que trato?/ p>

Por ejemplo, imagine un modelo de transacción simple que pueda tener muchas líneas y también pertenecer a un solo usuario.

Ahora, dada una instancia del modelo de transacción (poblado o despoblado), ¿cómo puedo averiguar las relaciones que tiene para los otros modelos?

Solo para estar claro, no quiero recuperar los datos relacionados reales, solo quiero averiguar qué clase se refiere cada clase y si es uno a muchos, muchos a muchos, etc.

Cualquier consejo apreciado.

gracias

¿Fue útil?

Solución

Los modelos elocuentes de Laravel no funcionan de esta manera, las relaciones se definen por métodos dentro del modelo y no están cargados automáticamente por el modelo en la instanciación, de ahí el requisito de llamar a estos métodos cuando quiera usar una relación específica.

Cuando instancie a una clase de modelos, tiene cero relaciones definidas.Esto se puede mostrar a continuación:

$user = new User();

print_r($user->getRelations());

//Output : empty array

Como puede ver, el modelo es felizmente inconsciente de cualquier relación, puede o no haber declarado en los métodos de relación.Cuando llame a una relación de modelos:

$user = new User();

$user->find(1)->roles()->get();

Elocuentes establece la relación en el modelo utilizando un método setRelation($relation, $value) que toma el nombre del método llamado como primer argumento y la devolución de ese método como el segundo.Así, proporcionando el contexto para la relación que no existe antes de que lo solicite específicamente.

Sé que esto no es lo que esperas escuchar, pero no hay manera de hacerlo con elocuentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top