首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >count():参数必须是在laravel中实现Countable的数组或对象

count():参数必须是在laravel中实现Countable的数组或对象
EN

Stack Overflow用户
提问于 2020-01-10 10:15:02
回答 3查看 421关注 0票数 1

请帮我解决这个问题当我运行这段代码时,出现了一个错误count ():当我想要获取no_st时,参数必须是一个数组或实现Countable的对象

代码语言:javascript
复制
public function get_no_st(Request $request){

        $no_org = null;
        $tgl    = $request->tgl ?: date('Y-m-d');
        $tgl    = Helper::saveDateIndo( $tgl );
        $max_no_st = $request->max_no_st ?: null;

        if ( $request->org == 'KPA'){
            $no_org = 'KPA.MBU';
        }else if ( $request->an ) {
            $no_org = $this->organisasi->select('kode_surat_atas_nama', 'kode_surat')->where('id', $request->org)->first();
            $no_org = ( count($no_org) > 0
                        ? ( trim($no_org->kode_surat_atas_nama) != null ? $no_org->kode_surat_atas_nama : $no_org->kode_surat )
                        : @$no_org->kode_surat );
        } else {
            $no_org = $this->organisasi->select('kode_surat')->where('id', $request->org)->first();
            $no_org = (count($no_org) > 0 ? $no_org->kode_surat : null);
        }

        if(!$max_no_st) {
            $max_no_st = $this->model->select('no_st_increment');
            if ( $request->org == 'KPA') {
                $max_no_st = $max_no_st->where('is_kpa', true);
            } else {
                $max_no_st = $max_no_st->where('pt_organisasi_id', $request->org);
            }
            if ( $tgl )
            {
                $max_no_st  = $max_no_st->where(DB::raw('EXTRACT( YEAR FROM tgl_awal )'), date('Y', strtotime($tgl)) );
            }
            $max_no_st  = $max_no_st->max('no_st_increment') + 1;
        }

        $no_st      = 'ST-'.$max_no_st.'/'.($no_org ?: '-').'/'.date('n/Y', strtotime( $tgl ));

        return $no_st;
    }
EN

回答 3

Stack Overflow用户

发布于 2020-01-10 14:53:08

您正在尝试计算对象类型数据,但您将只能计算数组。如果您仍然想计算一个对象的属性,您可以简单地将该对象转换为一个数组。如下所示:

代码语言:javascript
复制
count((array) $no_org);

返回$no_org的属性总数;

票数 1
EN

Stack Overflow用户

发布于 2020-01-10 10:20:03

这是因为您使用的PHP版本和Laravel版本。

阅读here

您可以将结果转换为数组。

代码语言:javascript
复制
$no_org = ( count((array)$no_org)
...
票数 0
EN

Stack Overflow用户

发布于 2020-01-10 10:21:46

根据错误消息,您是count()不能实现Countable的东西。

->first()将返回一个不能实现countable的对象。

->get()将返回一个可以计数的集合。

但是,您只需要找到organisasi的一个对象,所以您可以像这样使用empty()

代码语言:javascript
复制
empty($no_org)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59674675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档