当前位置: 首页 > 知识库问答 >
问题:

laravel:count():参数必须是实现可计数的数组或对象

欧阳永宁
2023-03-14

我使用的是Laravel5.3,我的php版本是7.1

当我调用SoftDeletes类时,我得到了那个错误

Builder.php第1231行中的ErrorException:count():参数必须是实现可计数的数组或对象

这是我的模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;


class Post extends Model
{

    use SoftDeletes;

    protected $dates = ['deleted_at'];

    protected $fillable = [

        'title','content','image','category_id','slug'
    ];



    public function category(){


        return $this->belongsTo('App\Category');
    }
}

这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Post;

use App\Category;

use Session;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {



        return view('admin.posts.index')->with('posts',Post::all());

    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $category = Category::all();

        if($category->count() == 0){

            Session::flash('info' , 'You must create at least 1 category to add a new post');

            return redirect()->back();
        }

        return view('admin.posts.post')->with('categories',$category);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

        $this->validate($request,[

            'title'         => 'required|max:255',
            'image'         => 'required|image',
            'content'       => 'required',
            'category_id'   => 'required'
        ]);


        $image = $request->image;

        $image_new_name = time().$image->getClientOriginalName();

        $image->move('/uploads/posts' , $image_new_name);



        $post= Post::create([

            'title'          => $request->title,
            'image'          => '/uploads/posts/' . $image_new_name,
            'content'        => $request->content,
            'category_id'    => $request->category_id,
            'slug'           => str_slug($request->title)
        ]);

        Session::flash('success' , 'You created a new post');

        return redirect()->back();



    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

当我删除count()函数时,也会得到相同的错误

如何解决此错误

共有3个答案

程志新
2023-03-14

我有相同的问题laravel发现()方法返回一个对象,而不是数组。因此,count()方法将不起作用。尝试:Stackoverflow解决方案或

Post::all()->toArray();

将返回一个数组,该数组将与count()方法一起工作。

齐夕
2023-03-14

我更改了C:\laragon\www\mystore\vendor\laravel\framework\src\illumb\Database\elount中的第1231行

$originalWhereCount = !empty($query->wheres) ? count($query->wheres) : 0;
华俊贤
2023-03-14

Laravel 5.3和我的PHP版本is 7.1互不兼容请参阅github中的此问题

为了解决这个错误,你可以做两件事

  • 将laravel 5.3升级至laravel 5.5请参阅此(5.3至5.4,5.4至5.5)
 类似资料:
  • 我在PHPmyadmin中有一些奇怪的错误。 ./libraries/pmd_common.php#405 count()中的警告:参数必须是实现可计数的数组或对象 回溯 ./db_designer.php#102:PMA_getLoadingPage(字符串'db_Name') 如何修复它?

  • 警告:count():参数必须是一个数组或一个对象,它在invTranslate_translated_menu_link_alter()中实现了Countable()(第55行来自\站点\所有\模块\自定义\invTranslate\invTranslate.module)。 invTranslate.module是一个自定义模块。 第55行是:

  • 我想选择最佳查找结果。我得到了一个错误:在这里,我在下面的文件中显示了HTML表单操作和DB连接,请检查它。错误消息也提到了这一部分。我使用的是PHP7.2,但遇到了一些问题 警告:count():参数必须是在第64行的D:\xammp\htdocs\search\index.php中实现 可计数的数组或对象 警告:在第37行的D:\xammp\htdocs\search\index.php中使用

  • 我面临着奇怪的案子。我在生产环境中面临一个错误,而在开发中它工作正常。 开发: Laravel 5.4.28 PHP 7.0.13 MYSQL 5.7.17 制作:Laravel 5.4.28 PHP 7.2.1 MYSQL 5.7.20 在实现代码中。我用过: 在开发中,它运行良好。但是在生产中,它给我这个错误:Count():参数必须是一个数组或一个在Builder.php中实现可数的对象(第

  • 我有这个代码返回一个错误: 参数必须是实现可数的数组或对象?

  • 我正在处理symfony,收到了这个消息 参数必须是实现可数的数组或对象 此消息仅针对PHP7.2.14显示,不针对PHP7.1.26。 我想在服务器上应用的解决方案,就像这一个phpmyAdmin。 我知道有一些解决方案涉及像这样更改代码。 但我想要一个解决方案,是所有页面,所以在服务器端。 提前谢谢!