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 emersonandree
      <script type="text/javascript"> $(document).ready(function(){ $('#btn_busca_f').click(function () { var data_ini = $('#data_ini').val(); var data_fim = $('#data_fim').val(); var cod_recurso = $('#cod_recurso').val(); var cod_funcionario = $('#cod_funcionario').val(); var num_op = $('#num_op').val(); $.ajax({ type: 'post', async: false, url: '/intranet/ExportaFimApontamento', data:{ '_token': '{{csrf_token()}}', 'data_ini': data_ini, 'data_fim': data_fim, 'cod_recurso': cod_recurso, 'cod_funcionario': cod_funcionario, 'num_op': num_op }, erro: function () { alert('erro'); }, success: function (data) { return (data); alert('Excel Gerado com Sucesso!'); } }); }); }); </script> este script executa uma função no controller onde ele gera um arquivo excel.xls, porem se eu executar a função direto no controler ele funciona, se eu executar com o script ele funciona mas nao gera o arquivo.xls alguem sabe como posso fazer para que ele baixe o arquivo la na função?
    • Por beto.vanzin
      Bom dia. Eu fiz tenho uma view que traz os movimentos de contas correntes. Porém, eu preciso agrupar em uma tabela dinâmica.

      Estou tentando fazer  o agrupamento direto pela view. Porém, através de uma query, eu consigo ver o resultado que eu quero, mas pela view, não permite gravar.
       
      Veja o script que eu estou usando, e a mensagem de erro ao gravar a view:
       
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      USE [BANCO]
      GO
      /****** Object:  View [dbo].[SALDO_CONTA_CORRENTE]    Script Date: 03/06/2019 12:29:55 ******/
      SET ANSI_NULLS ON
      GO
      SET QUOTED_IDENTIFIER ON
      GO

      ALTER  VIEW [dbo].[SALDO_CONTA_CORRENTE]
      AS

      SELECT            A.EMPRESA,
                      C.TIPO_MOVIMENTO AS [TP_MOV],
                      A.RATEIO_FILIAL,                
                      RTRIM(A.CONTA_CONTABIL) + ' - ' + RTRIM(B.DESC_CONTA) AS [CONTA],                 
                      SUM(A.CREDITO) AS DEBITO,
                      SUM(A.DEBITO) AS CREDITO,
                      SUM(A.DEBITO - A.CREDITO) AS SALDO
       
      FROM         dbo.CTB_LANCAMENTO_ITEM A   INNER JOIN
                            dbo.CTB_LANCAMENTO C   ON A.EMPRESA = C.EMPRESA AND A.LANCAMENTO = C.LANCAMENTO INNER JOIN
                            dbo.CTB_CONTA_PLANO B   ON A.CONTA_CONTABIL = B.CONTA_CONTABIL INNER JOIN
                            dbo.CTB_MOVIMENTO_TIPO D   ON C.TIPO_MOVIMENTO = D.TIPO_MOVIMENTO INNER JOIN
                            dbo.CTB_LX_LANCAMENTO_TIPO   ON A.LX_TIPO_LANCAMENTO = dbo.CTB_LX_LANCAMENTO_TIPO.LX_TIPO_LANCAMENTO

      WHERE B.CONTA_CORRENTE = '1' AND B.INATIVA = '0'
       
      GROUP BY
      A.EMPRESA,
      C.TIPO_MOVIMENTO,
      A.RATEIO_FILIAL,
      A.CONTA_CONTABIL,
      B.DESC_CONTA
       
      ORDER BY A.EMPRESA, A.RATEIO_FILIAL, C.TIPO_MOVIMENTO, A.CONTA_CONTABIL

      GO
       
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      E esta é a mensagem de erro:
       
      Msg 1033, Level 15, State 1, Procedure SALDO_CONTA_CORRENTE, Line 29
      The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.
       
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      Alguém consegue me ajudar com este erro?
       
       
    • Por eduardojc
      Boa tarde pessoal, tenho uma tabela que busca os valores no meu MYSQL.

      Tenho um id ( 199917 ) por exemplo. Ele aparece 10x no meu banco de dados

      1 - 199917  data1 peso1
      2 - 199917  data2 peso2
      3 - 199917  data3 peso3
      ..... etc

      Precisaria retornar da seguinte forma minha tabela

      199917  - data1 peso1
                       data2 peso2
                       data3 peso3

      199939  - data1 peso1
                       data2 peso2
                       data3 peso3

      em anexo está as imagens, ficaria grato se puderem ajudar, dei uma pesquisada vi que tem rowspan, mas não faço ideia de como agrupar.

      Tabela 1 como está, tabela 2 como gostaria que ela fica-se

      meu Código:
      <div class="linha"></div> <div class="container"> <table class="table table-striped"> <thead class="thead-dark"> <tr> <th rowspan="1">Brinco</th> <th scope="col">Peso</th> <th scope="col">Data</th> <tr> </thead> @foreach($listagem as $lista) <tbody> <tr> <td rowspan="1">{{$lista->brinco_id }}</td> <td>{{$lista->peso }}</td> <td>{{ \Carbon\Carbon::parse($lista->data)->format('d/m/Y') }}</td> </tr> </tbody> @endforeach </table> </div>

    • 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>
       

×

Informação importante

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