这是错误:
"count(): Parameter must be an array or an object that implements
Countable (View: C:\xampp\htdocs\blog\resources\views\inc\sidebar.blade.php)"
这是我的views / inc / sidebar.blade.php:
@if(count($articles)>0)
@foreach($articles as $article)
{{$article->title}}
@endforeach
@endif
这是我的控制人:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Article;
class HomepageController extends Controller
{
public function sidebar(){
$articles = Article::orderBY('created_at', 'desc')->where('active', '1')->take(2)->get();
return view('inc.sidebar')->with('articles', $articles);
}
}
在我的views / pages / view_article.blade.php
@extends('layouts.layout')
@section('content')
<div class="container">
<div class="row no-gutters" style="margin-top: 10px;margin-left: 5px;margin-right: 5px; min-height: 450px;">
<div class="col-md-9 tex-justify">
<table class="table-responsive">
<tr><td>{{$articles->title}}</td></tr>
<tr><td>{{$articles->created_at->format('M d Y')}}</td></tr>
</table>
<img src="/img/{{$articles->img_article}}">{!!$articles->body!!}</div>
</div>
<div class="col-md-3">
@include('inc.sidebar')
</div>
</div>
</div><br>
@endsection
我在做什么错了?
答案 0 :(得分:0)
使用orderBY
而不是orderBy
可能是问题所在,但如果不是问题,请尝试替换:
$articles = Article::orderBY('created_at', 'desc')->where('active', '1')->take(2)->get();
具有:
$articles = Article::orderBy('created_at', 'desc')->where('active', '1')->take(2)->get()->all();
其背后的原因是Illuminate\Database\Query\Builder::get
返回一个Illuminate\Support\Collection
,而不是一个数组,而Illuminate\Support\Collection::all
返回一个直接数组,其中包含与count
一起使用的集合中的项目
答案 1 :(得分:0)
使用@if(isset($articles[0]->id)
代替@if(count($articles)>0)