plantillas - ¿Laravel elocuente polimórfico uno a uno?
push laravel (2)
Pruebe este, creo que es mejor que morphOne que no es compatible.
public function address()
{
return $this->hasOne(''App/Address'', ''addressable_id'',''id'')
->where(''addressable_type'', ''App/Model'');
}
Estoy tratando de configurar una relación polimórfica de uno a uno (el equivalente polimórfico de has_one y pertenece a). Tengo un modelo de Address
y hay varios otros modelos en los que quiero tener una dirección. Sin embargo, estoy confundido por la redacción de los documentos. He visto el método morphMany
, pero mi pregunta es: ¿debo usar morphMany
aunque solo quiera que tenga una dirección, o hay algo parecido a un método morphOne
que debería usar?
EDITAR: el modelo Mi Address
tiene estos campos, solo para ayudar a visualizar:
Schema::create(''addresses'', function ($table)
{
$table->increments(''id'');
$table->string(''street'');
$table->string(''street_more'')->nullable();
$table->string(''city'');
$table->string(''state'')->nullable();
$table->string(''country'');
$table->string(''postal_code'');
$table->integer(''addressable_id'');
$table->string(''addressable_type'');
});
Sí, hay un método morphOne y creo que es el que debe usar en este caso: https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L811 .
También puedes usar
$table->morphs(''addressable'');
en lugar de
$table->integer(''addressable_id'');
$table->string(''addressable_type'');
He usado morphOne en un paquete personalizado para L4 y funciona bastante bien.