Ir para conteúdo
GiselePassoni

Problemas ao exibir informações de relacionamento na view do laravel

Recommended Posts

Boa tarde!

Tenho uma tabela de notícias e uma tabela de fotos. Cada notícia possui várias fotos. Na home tem que aparecer as duas últimas notícias e a respectiva foto de destaque.

os Models estão assim:

class Noticia extends Model
{
    protected $table = 'not_noticias';
    protected $primaryKey = 'id_noticias';
    public $timestamps = false;
    protected $dates = ['deleted_at'];
    protected $fillable =[
            'texto',
            'titulo',
            'legenda',
            'pasta',
            'subtitulo',
            'evento',
            'titulo_evento'
    ]; 
   
    public function foto()
        {
            //return $this->hasMany(Foto::class); 
            return $this->hasMany('App\Foto','id_noticia','id_noticias'); 
        }
}
class Foto extends Model
{
    protected $table = 'not_fotos';
    protected $primaryKey = 'id_foto';
    public $timestamps = false;
    protected $dates = ['deleted_at'];
    protected $fillable = [
        'nome',
        'endereco',
        'id_noticia'
    ];

    public function noticias()
        {
            return $this->belongsTo('App\Noticia','id_noticias','id_noticia'); 
        }
}

O controller está assim:

Class NoticiasController extends Controller
{
    public function index()
      {
      }
    public function noticia()
      {
        $noticias = Noticia::with(['Foto' => function($query){
                    $query->get()->first();//first()find(1)
                 }])
                ->orderBy('id_noticias','DESC')
                ->take(2)
                ->get();
       //dd($noticias);
       return view('inc_home.noticias')->with('noticias',$noticias);
      }
  }

na view noticias.blase.php está assim;

@foreach ($noticias as $key=> $not)
                <div class="col-md-6">
                    <div class="panel-heading">
                        <img src={{asset('public/'.$not->fotos->endereco)}}>
                        <h4>{{ $not->titulo }}</h4>
                        <p align="justify">
                            <a href="#" class="noticia">
                               {{$texto = substr($not->texto,0,150)." ..."}}
                            </a>
                        </p>
                    </div>
                </div> 
            @endforeach

 

Ao tentar exibir a view, aparece: Trying to get property of non-object (View: C:\xampp\htdocs\pro_fundec\resources\views\inc_home\noticias.blade.php)

Não sei o que está errado!

Se na view eu deixo apenas assim: <img src={{asset('public/'.$not->endereco)}}>  aparece o titulo e texto, mas as imagens não

 

Aguardo pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites
$noticias = Noticia::with(['foto' => function($query){

Talvez a letra maiúscula seja o problema.

 

<img src={{asset('public/'.$not->foto->endereco)}}>

fotos está em plural, mas a função é foto sem plural.

 

Citar

Ao tentar exibir a view, aparece: Trying to get property of non-object (View: C:\xampp\htdocs\pro_fundec\resources\views\inc_home\noticias.blade.php)

Esse erro acontece por você tentar acessar um atributo de objeto que não existe.

Então em $not->fotos->endereco, como fotos não existe, acessar um atributo (endereco) de algo que não existe gera este erro.

 

Citar

Se na view eu deixo apenas assim: <img src={{asset('public/'.$not->endereco)}}>  aparece o titulo e texto, mas as imagens não

Ao contrário do acima, você está tentando acessar um atributo de um objeto que existe. $not existe, apesar de "endereco" não existir. Isso não gera erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde kosonome!

Fiz o que você me sugeriu.

Apareceu agora esse erro:
Property [endereco] does not exist on this collection instance. (View: C:\xampp\htdocs\pro_fundec\resources\views\inc_home\noticias.blade.php)

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar

Property [endereco] does not exist on this collection instance. (View: C:\xampp\htdocs\pro_fundec\resources\views\inc_home\noticias.blade.php)

Este erro indica que você está tentando acessar "endereco" em uma coleção/array.

 

Já que é uma coleção, talvez isto resolva:

$not->foto[0]->endereco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por antonio_milat
      Meu listener está sendo chamado duas vezes, mas o evento só é disparado uma vez.
      Eu copiei a base do código da documentação do Lumen 5.7 e aparentemente está tudo configurado corretamente. Não consigo encontrar o problema.
       
      bootstrap/app.php
      $app->register(App\Providers\EventServiceProvider::class);  
      app/Providers/EventServiceProvider.php
      protected $listen = [ 'App\Events\NewAuthEvent' => [ 'App\Listeners\SendNewAuthListener', ], ];  
      app/Events/NewAuthEvent.php
      use Illuminate\Queue\SerializesModels; use App\Data\Entity\User; use App\Data\Entity\Authorization; use Illuminate\Support\Facades\Log; class NewAuthEvent { use SerializesModels; public $user; public $auth; public function __construct(User $user, Authorization $auth) { Log::debug("Disparado uma vez"); $this->user = $user; $this->auth = $auth; } }  
      app/Listeners/SendNewAuthListener.php
      use App\Events\NewAuthEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use App\Data\Service\MessengerService; use Illuminate\Support\Facades\Log; class SendNewAuthListener { private $messenger; public function __construct(MessengerService $messenger) { Log::debug("Chamado duas vezes"); $this->messenger = $messenger; } public function handle(NewAuthEvent $event) { Log::debug("Chamado duas vezes também"); $this->messenger->new($event->user, $event->auth); } }  
      Disparando o evento:
      event(new NewAuthEvent($objUser, $objAuthorization)); Estou me esquecendo de algum parâmetro ou configuração? Agradeço desde já!
    • Por bobzznnn
      Preciso de um script que converta o saldo atual do meu website em bitcoin. Assim que eu possa colocar de forma que esteja junto ao "Valor" da conta.
      O Script que puxa o valor é esse:
       
      <div class="row">
          <div class="col-md-3 col-sm-6 col-xs-12">
              <div class="info-box">
                  <span class="info-box-icon bg-aqua"><i class="fa fa-usd"></i></span>
                  <div class="info-box-content">
                      <span class="info-box-text">MEU SALDO</span>
                      <span class="info-box-number">U$ <?php
                                      $saldo = Auth::user()->saldo;
                                      echo e(number_format($saldo, 2, '.', ','));
                                      ?></span>
                  </div>
                  
              </div>
          </div>
       

    • Por Air-Gear
      Olá a todos!
       
      Eu comecei mexer com Laravel hoje e até conseguir criar um novo projeto, mas eu preciso abrir e rodar um projeto existente e não estou conseguindo. Ele pede o arquivo autoload.php que não está no projeto. Eu já instalei o Banco de Dados desse projeto sem problemas. Eu instalei o Composer, mas não coloquei a URL de referência. Eu uso o Wamp Server 3.0.6, com Apache 2.4.23, PHP 5.6.25 e MySQL 5.7.14.
       
      Eu preciso instalar mais alguma coisa? Esqueci de fazer alguma configuração? Por favor, preciso de ajuda.
    • Por jomarcoelho
      Numa banco de dados tem 1 tabela com lançamentos gerais de todos os produtos e todos os meses
       
      Tabela de Producao - Geral   ID Produto Quantidade Data 1 Sebo 1000 12/11/2018 2 Canela 2000 12/11/2018 1 Sebo 2000 13/11/2018 3 Osso 100 13/11/2018 1 Sebo 2000 10/10/2018 2 Canela 1000 09/09/2018 2 Canela 1000 09/09/2018 3 Osso 1000 10/10/2018 1 Sebo 1500 20/09/2018 4 Orelha 3000 18/10/2018 1 Sebo 4000 11/10/2018 3 Osso 1200 01/10/2018  

      Qual a consulta correta para extrair a produção total de cada produto dentro do mes.
      Puxando numa so tabela o total “por produto”, dentro do mes.

      Assim:
       
      Tabela de Producao - Setembro Canela 2000   Sebo 1500  
       
      Tabela de Producao - Outubro Sebo 6000   Osso 2200   Orelha 3000  
       
      Tabela de Producao -Novembro Sebo 3000   Canela 2000   Osso 100  
       
    • Por jomarcoelho
      Numa banco de dados tem 1 tabela com lançamentos gerais de todos os produtos e todos os meses
       
      Tabela de Producao - Geral   ID Produto Quantidade Data 1 Sebo 1000 12/11/2018 2 Canela 2000 12/11/2018 1 Sebo 2000 13/11/2018 3 Osso 100 13/11/2018 1 Sebo 2000 10/10/2018 2 Canela 1000 09/09/2018 2 Canela 1000 09/09/2018 3 Osso 1000 10/10/2018 1 Sebo 1500 20/09/2018 4 Orelha 3000 18/10/2018 1 Sebo 4000 11/10/2018 3 Osso 1200 01/10/2018  

      Qual a consulta correta para extrair a produção total de cada produto dentro do mes.
      Puxando numa so tabela o total “por produto”, dentro do mes.

      Assim:
       
      Tabela de Producao - Setembro Canela 2000   Sebo 1500  
       
      Tabela de Producao - Outubro Sebo 6000   Osso 2200   Orelha 3000  
       
      Tabela de Producao -Novembro Sebo 3000   Canela 2000   Osso 100  
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.