laravel未定义的偏移量:1个回调函数

时间:2015-02-10 20:58:57

标签: php arrays laravel

我正在使用https://github.com/Chumper/Datatable作为数据表。它运作良好但似乎虽然我没有真正改变任何东西。它停止了工作。任何软件包从工作时到工作时都没有更新。我不认为图书馆本身有任何问题,很可能是我在这里缺少的基本内容。

无论如何,我正在创建一个列,返回值是来自数据库中一列的数组的一部分。原因是数据经常更改,因此列被合并为一列(使用elasticsearch进行实际搜索)

if(Datatable::shouldHandle())
{
    $data = Item::select('id', 'created_at', 'updated_at', 'cat_id', 'quick_access')->where('cat_id', '=', $id)->get();

    return Datatable::collection($data)
        ->addColumn('unit_id', function($model){
            return HTML::linkRoute('inventory.items.show', $model->quick_access[0], [$model->cat_id, $model->id]);
        })
        ->addColumn('column1', function($model){
            return $model->quick_access[1];
        })
        ->addColumn('column2', function($model){
            return $model->quick_access[2];
        })
        ->addColumn('column3', function($model){
            return $model->quick_access[3];
        })
        ->addColumn('column4', function($model){
            return $model->quick_access[4];
        })
        ->addColumn('column5', function($model){
            return $model->quick_access[5];
        })
        ->addcolumn('created_at', function($model){
            return Carbon::parse($model->created_at)->format('d/m/Y H:i:s');
        })
        ->addColumn('updated_at', function($model){
            return Carbon::parse($model->updated_at)->format('d/m/Y H:i:s');
        })
        ->addColumn('id', function($model){
            return $model->id;
        })
        ->searchColumns('unit_id','column1','column2','column3','column4','column5')
        ->orderColumns('unit_id','column2','column4','column5','id')
        ->make();
}

这是有问题的部分,第二个添加列column1是错误发生的地方,它说Undefined offset: 1然而,广泛地测试它变量很好。 $model->quick_access是一个数组,应该是$model->quick_access[1]是一个字符串,应该是它。但是,尽管它是正确的,但它会触发错误。这个确切的代码之前工作正常,似乎停止了。

以防万一quick_access是一个数组,这是处理它的模型的一部分。

public function getQuickAccessAttribute($quick_access)
{
    return explode(';',$quick_access);
}

无论如何,我只是对这个问题的想法已经用完了,有没有人遇到过类似的问题?虽然你可以正确地转储变量,但php说它不存在?

1 个答案:

答案 0 :(得分:0)

问题最终导致一些记录格式不正确。更多的是多米诺骨牌效应导致它,看似无关的东西聚集在一起造成它。

首先在数据库中,一切似乎都没问题。但是有一个错误,无论何时进行编辑,它都被发送到存储而不是更新。此外,快速访问功能尚未添加到商店,留下一个空数组,与其余部分没有出现在同一组中(种子数据)。

这两行导致了这个问题,但是最后一个问题很难被隔离。最简单的解决方法是使用if语句来诊断它何时发生。一旦确定并且可以找到新ID,就可以删除它们,修复错误。

lukasgeiter评论帮助我最终诊断出这一点,这是一个导致沮丧的小愚蠢错误。