/ / Laravel: función de modelo para verificar si existe una relación - laravel, elocuente

Laravel: función de modelo para verificar si existe una relación - laravel, elocuente

Tengo dos modelos Cliente, Contacto Con la siguiente relación en el modelo de cliente:

public function latestContact () {
return $this->hasOne(Contact::class)->latest();
}

Ya me enteré aquí que el ayudante opcional es posible verificar si existe la relación al mostrar los datos. De lo contrario recibiría un "Tratar de obtener la propiedad de no-objeto" error.

optional($customer->latestContact)->address

Ahora me pregunto si hay una manera de verificar esto directamente dentro de la función del modelo. Preferiría solo llamar

$customer->latestContact->address

o algo como

$customer->getLatestContactAdress

y devuelve falso (o ningún resultado) si la relación no existe.

Gracias de antemano.

Respuestas

1 para la respuesta № 1

Tú podrías definir un accesorio o una función dentro de su modelo padre.

Algo así en tu modelo de cliente:

public function getLatestContactAddress()
{
return optional($this->latestContact)->address;
}

Y llámalo así:

$customer->getLatestContactAddress();

0 para la respuesta № 2

Trate de usar la carga ansiosa

$customer = Customer::with("latestContact")->get();

Avísame si no funciona.