Q: Solventar error con tablas relacionadas Tengo dos tablas relacionadas Users y Profiles, ambas guardan información del usuario, pero hago el registro en dos partes, los primeros datos (email y password) se guardan en la tabla Users y el usuario debe confirmar el email para continuar, una vez que lo hace lo lleva a un formulario para completar el perfil.
El problema se presenta cuando el usuario hace el primer paso (Completar el email y password) la tabla profiles no tiene el user_id porque no se ha completado el paso dos y a veces puede tardar en hacerlo, cuando entro como administrador me muestra un error:
Trying to get property 'name' of non-object (View: C:\xampp\htdocs\web.com\resources\views\admin\dashboard\users\admin-index.blade.php) 

Ese error lo muestra porque no ha encontrado los datos, este es mí código:
$users = User::join('profiles', 'profiles.user_id', '=', 'users.id')
                    ->where('users.user_type', '!=', 'Super')
                    ->where('users.status', '!=', 'DELETED')
                    ->where('users.status', '!=', 'REGISTERED')
                    ->orderBy('users.id', 'DESC')
                    ->paginate(15);

Como podría decirle al controlador que obvie esos registros? sé que puedo colocar las variables como opcionales en la vista {{ $user->profile->name ?? '' }}, pero en el administrador me aparece el registro sin mostrar los datos y no lo veo como una solución óptima.

A: No estoy del todo seguro, pero al hacer join estas actuando sobre la base de datos sin pasar por el modelo de eloquent por lo cual ese campo no existe, por que es explicito de la query, al usar eloquent este traerá incluso los fillables sin datos.


//User Class

public function profile(){
    return $this->hasOne(Profile::class)
}

// controller

$users = User::with('profile')
    ->where('user_type', '<>', 'Super')
    ->where('status', '<>', 'DELETED')
    ->where('status', '<>', 'REGISTERED')
    ->orderBy('id', 'DESC')
    ->paginate(15);


