Yêu cầu thg 6 27, 2021 2:41 CH 177 0 2
  • 177 0 2
0

lỗi dd và show value trong Laravel

Chia sẻ
  • 177 0 2

chào mọi người, m đang làm project về lar nhưng k rõ lỗi thế này thì ntn? ai giải thích hộ m với

m dùng 2 code để check

{{dd($post_cate_i->post_title)}}: code này show ra value, value nó nằm gần cuối ảnh nhé bạn

image.png {{$post_cate_i->post_title}}: code này thì lại bị lỗi,

image.png

mà m check object thì nó trả về true, k rõ nó là lỗi ntn

bạn nào biết về lỗi này giúp m gỡ lỗi với nhé

Thanks All

2 CÂU TRẢ LỜI


Đã trả lời thg 6 28, 2021 7:48 SA
Đã được chấp nhận
0

Mình nghĩ có thể là do có một cái category của bạn không có bài viết nào, nên $post_cate[$a]->first() sẽ trả về null và gây lỗi.

Bạn có chắc chắc là trong tất cả các category đều có bài viết ko?

Chia sẻ
Avatar Phu @phuth
thg 6 29, 2021 5:09 CH

chắc vậy đó ban, để m đặt điều kiện nếu mảng rỗng thì m sẽ k hiện lên xem ntn

Đã trả lời thg 6 27, 2021 3:12 CH
0

Đầu tiên để fix lỗi này bạn sửa lại code thành {{$post_cate_i ? $post_cate_i->post_title : ''}}

Giải thích một chút: Do bạn chưa show toàn bộ code nên mình đưa ra như này

  • Mình thấy bạn đang dùng array với collection khá lộn xộn. Ví dụ $post_cate là 1 mảng collection thay vì viết $post_cate[$a]->first(), bạn hãy convert hẳn về dạng collection hoặc array để thống nhất kiểu dữ liệu.
  • dd dùng hàm này mọi tiến trình sẽ dừng lại, chính vì thế trang sẽ chỉ in ra kết quả đầu tiên trong mảng $post_cate, nên các giá trị sau bị lỗi mà bạn không biết, bạn có thể dùng var_dump() để debug trong TH này, sẽ biết $post_cate_i nào đang không phải object.
Chia sẻ
Avatar Phu @phuth
thg 6 27, 2021 3:21 CH

đây nhé bạn m show toàn bộ code trong controller và code ngoài view

m dùng {{-- {{dd($post_cate_i->post_title)}} --}} {{-- {{$post_cate_i->post_title}} --}} cạnh nhau để test luôn bạn, m dùng shift để lấy giá trị đầu tiên của mảng và dùng luôn first(), thì giá trị đầu tiên đó là 1 object vì m đã check is_object thì nó trả về 1,

foreach($cate_all as $ct){ if($ct->cate_parent_id == 0){ ++$i; $cate_sub = Cate::where('cate_parent_id', $ct->id)->get(); $count_cate_sub = Cate::where('cate_parent_id', $ct->id)->count(); // dd($count_cate_sub);

        // dd($cate_sub);
        if($count_cate_sub != 0){
            foreach($cate_sub as $cate_s){
                $cate_sub_id[] = $cate_s->id;
            }
            $post_cate[$i] = Post::whereIn('post_cate_id', $cate_sub_id)->orderBy('id', 'DESC')->take(6)->get();
            // $post_cate[$i] = Post::whereIn('post_cate_id', $cate_sub_id)->orderBy('id', 'DESC')->take(6)->get()->toArray();
            // $post_cate = $post_cate2->toArray();
           
        }else{
            $post_cate[$i] = Post::where('post_cate_id', $ct->id)->orderBy('id', 'DESC')->take(6)->get();
            // $post_cate[$i] = Post::where('post_cate_id', $ct->id)->orderBy('id', 'DESC')->take(6)->get()->toArray();
            // $post_cate = $post_cate2->toArray();
        }
      }else{
          $post_cate[$i] = Post::where('post_cate_id', $ct->id)->orderBy('id', 'DESC')->take(6)->get();
          // $post_cate[$i] = Post::where('post_cate_id', $ct->id)->orderBy('id', 'DESC')->take(6)->get()->toArray();
          // $post_cate = $post_cate2->toArray();
      }

      // if($ct->cate_parent_id ==0)
      //   $post_cate[$i] = Post::where('post_cate_id', $ct->id)->orderBy('id', 'desc')->take(5)->get()->toArray();
        
        
      // }

    }

code trong controller, m dùng get đẻ tạo collection và m đặt vào mảng để lấy giá trị theo cate

code ngoài view

@for ($a = 1; $a <= $i; $a++) <section class="home_section1">

<div class="row"> <div class="col-md-12">

          <div class="jl_grid_wrap_f jl_clear_at g_3col">
            <div class="jl-roww content-inner jl-col3 jl-col-row">
              <div class="jl_sec_title">
                <h3 class="jl_title_c"><span>Editors Picks Post</span></h3>
                <p>This is an optional subtitle for post section</p>
              </div>
            </div>
          </div>
          <div class="jl_mright_wrapper jl_clear_at">
            <div class="jl_mix_post">
              
              
              {{-- {{$post_cate_i = array_slice($post_cate[$a], 0)}} --}}

              <?php $post_cate_i = $post_cate[$a]->first(); ?>
              {{-- {{is_object($post_cate_i)}} --}}
              {{-- {{dd($post_cate_i->post_title)}} --}}
              {{-- {{$post_cate_i->post_title}} --}}
              {{-- <?php echo $post_cate_i['post_title']; ?> --}}
              
              {{-- {{$post_cate_i->post_title}} --}}
              {{-- @foreach($post_cate_i as $pc_i) --}}

@@

dưới là hết code vòng lặp,

tại sao m dùng mảng để m lấy 1 collection gắn vào mảng rồi ra ngoài view m sẽ dùng for lặp để lấy giá trị trong mảng thì nó là 1 collection,

m lấy collection đầu tiên check object thì nó trả về true, m dùng cái trên thì bị lỗi đó bạn

k hiểu

Avatar Nguyễn Văn Quy @ruacondepzaj
thg 6 27, 2021 3:30 CH

@phuth bạn xem cái mảng $post_cate n in ra dữ liệu ra sao

Avatar Nguyễn Văn Quy @ruacondepzaj
thg 6 27, 2021 3:33 CH

@phuth

@foreach ($post_cate as $post)
    {{ var_dump($post) }}
@endforeach
Avatar Phu @phuth
thg 6 27, 2021 4:07 CH

m cũng test trước rồi

no là mảng image.png

image.png

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí