3
respostas

Pegar caminho das fotos no BD

Boa noite pessoal estou com um pequeno problema,

eu tenho uma tabela chamada tb_foto, e uma tabela de usuario. e estou tentando pegar todas as fotos relacionadas a um usuário pela FK usuario_id na tabela tb_foto.

Criei o model das duas classes tudo certinho, porém quando faço o 'select' para pegar não está funcionando em termos.

classe das fotos

<?php namespace harembr;

use Illuminate\Database\Eloquent\Model;

class Fotos extends Model {

    public $timestamps = false;

    protected $table = 'tb_foto';

    protected $fillable = array('id', 'caminho_foto', 'foto_p', 'usuario_id');

    public function usuario(){
        return $this->belongsTo('harembr\Usuario');
    }


}

classes do usuario

<?php namespace harembr;

use Illuminate\Database\Eloquent\Model;

class Usuario extends Model {


    public $timestamps = false;

    protected $table = 'tb_usuarios';

    protected $fillable = array('nome_usuario', 'email', 'senha_usuario', 'atendimento_id', 'servicos_id', 'idade_usuario', 'sexo', 'telefone','telefone_w', 'altura', 'peso', 'descricao', 'assinatura_id', 'id');


    public function foto(){
        return $this->hasMany('harembr\Fotos');
    }


}

tento fazer assim no meu controller. sendo que o $usuario->id pego na linha anterior a essa ai.

$fotos = Fotos::where('usuario_id', '=', $usuario->id)->get();

se eu trocar o get() e colocar o first(), ele funciona, mas com um problema. no banco tem apenas 2 fotos e ele traz 3.

e se colocar o get(); ele me mostra o seguinte erro.

Undefined property: Illuminate\Database\Eloquent\Collection::$caminho_foto (View: /home/dionisio/Projetos/PHP/harembr/resources/views/inicio.blade.php)

na minha view está assim

<?php 

                    if (empty($f)) { ?>

                    <img src="/img/foto_padrao.jpg" class="img-responsive">

                    <?php }else{
                            foreach ($f as $foto) {  ?>

                            <img src="{{$f->caminho_foto}}" class="img-responsive">
                        <?php
                            } 

                        }
                    ?>

quem puder me ajudar, agradeço

3 respostas

Oi Dionisio, tudo bem? Você não precisa usar o Where dessa forma. Você fez um relacionamento, então deveria funcionar fazer algo como:

$usuario->fotos();

E neste caso, ter um array com todas as fotos. Outra coisa que talvez você precise resolver, talvez por semantica é o nome do método no plural na classe que tem o hasMany

 public function fotos(){
        return $this->hasMany('harembr\Fotos');
    }

Fiz do jeito que você disse, porém ele só me retorna NULL.

e eu não consigo acessar as propriedades do objeto, tipo.

$u->foto->caminho_foto

Dionisio, acho que você esqueceu um s ai:

$u->foto->caminho_foto

deveria ser

$u->fotos->caminho_foto

Não funciona?