Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Quando mapeamos um relacionamento, ao buscar o pai as informacoes do filho automaticamente sao carregadas?

Ola,

Eu fiz o mapeamento dos relacionamentos, mas ao buscar o registro do pai as informacoes do filho nao sao carregadas. Estou utilizando o BaseController, com as funcoes abstratas.

Eu nao peguei a ideia corretamente (os dados nao sao carregados automaticamente) ou ha algo errado/faltando?

class Userx extends Model
{
    protected $table = 'pims.userx';

    public function phone()
    {
        return $this->hasMany(App\Phone::class, 'user_id', 'id');
    }
}
class Phone extends Model
{
    protected $table = 'pims.phone';

    public function userx()
    {
        return $this->belongsTo(Userx::class, 'id', 'user_id');
    }
}
    public function show(int $id)
    {
        $resource = $this->class::find($id);
        Log::info($resource);
        if (is_null($resource))
        {
            return response()->json('', 204);
        }
        return response()->json($resource);
    }
4 respostas
solução!

Olá, Kennedy.

Seu controller que estende o BaseController inicializando corretamente o atributo $classe?

Qual o erro exatamente? Nada deve ser carregado automático não. Nós definimos tudo.

Vinicius valeu! Eu acho que acabei olhando na direcao errada, eu pensei que criando os relacionamentos eu poderia usar o BaseController e "ganhar" a implementacao que traz os filhos ao consultar o pai. Mas eu entendi tambem a questao de nao ter isso automatico, dando a oportunidade de melhor gerenciar o acesso as tabelas e fazendo consultas(utilizando recursos do db) somente quando necessario.

Eu criei uma nova funcao no controller especifica para mapear e trazer o filho.

$resource = Userx::with('phone')->find($id);

E essa a linha correta a seguir?

Se essa nova consulta estiver no controller específico de Userx, e não no BaseController, sim. :-D

Sim, ela esta no USerxController!

Valeu Vinicius, muito obrigado!!