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

laravel非法偏移类型错误

宿楚青
2023-03-14

我有一个页面显示了单个测试用例的详细信息。出于某种原因,我无法跳过这个错误,甚至无法发送$id。这是我的控制器:

public function show($id)
{
    $data =DB::table('TestCase')->where('TestCaseID', $id);
    return view('managements.testcase-details')->with($data);
}

以下是错误:

在视野中。php第180行位于HandleExceptions-

共有3个答案

崔棋
2023-03-14

我在模型中添加了这个

<pre>
        namespace App;
        use Illuminate\Database\Eloquent\Model;
        use Illuminate\Database\Eloquent\Builder;

        class holding extends Model
        {
            public $timestamps = false;
            public $incrementing = false;
          public $keyType = 'string';
            protected $table = 'tb_holding';
            protected $primaryKey = ['qsymbol','id_user'];
            protected $fillable = ['qsymbol','qlotbuy','qbuyprice','qstoploss','qlaststopls','qbuydate','idnote','id_user'];


            //---> Illegal offset type while updating model 
            //---> because primary key more than 1 --> add this
            //https://laracasts.com/discuss/channels/laravel/illegal-offset-type-while-updating-model?page=1
            protected function setKeysForSaveQuery(Builder $query)
            {
                return $query->where('qsymbol', $this->getAttribute('qsymbol'))
                             ->where('id_user', $this->getAttribute('id_user'));
            }


</pre>
锺英彦
2023-03-14

这个方法解决了我的问题,我在这里展示它作为一个例子-

我们要使用的类-

<?php

namespace App;

use App\Helpers\ModelMPK; //MPK stands for Multi-column Primary Key handling

class AccountSession extends ModelMPK
{
    protected $hidden = ["account_id", "id"];
    protected $primaryKey = ['account_id', 'session'];
    public $incrementing = false;
}

自定义模型类,我从某处复制了该函数,我不能在这里引用他,因为我无法从中获取该函数-

<?php

namespace App\Helpers;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class ModelMPK extends Model
{
    /**
     * Set the keys for a save update query.
     *
     * @param  \Illuminate\Database\Eloquent\Builder  $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    protected function setKeysForSaveQuery(Builder $query)
    {
        $keys = $this->getKeyName();
        if(!is_array($keys)){
            return parent::setKeysForSaveQuery($query);
        }

        foreach($keys as $keyName){
            $query->where($keyName, '=', $this->getKeyForSaveQuery($keyName));
        }

        return $query;
    }

    /**
     * Get the primary key value for a save query.
     *
     * @param mixed $keyName
     * @return mixed
     */
    protected function getKeyForSaveQuery($keyName = null)
    {
        if(is_null($keyName)){
            $keyName = $this->getKeyName();
        }

        if (isset($this->original[$keyName])) {
            return $this->original[$keyName];
        }

        return $this->getAttribute($keyName);
    }
}
姚正真
2023-03-14

你忘了一点。一个get并设置数据变量名。您的错误意味着您传递的是一个查询生成器,而不是它的结果。第二个错误是您传递了一个NULL值(带有的中的第二个参数)。

$data =DB::table('TestCase')->where('TestCaseID', $id)->get();
return view('managements.testcase-details')->with('data', $data);

在视图中,使用data就像使用数组一样:foreach($data…)

 类似资料:
  • 问题内容: 我越来越 非法胶印类型 此代码每次迭代的错误。这是代码: 问题答案: __当您尝试使用 对象 或 数组 作为索引键访问数组索引时,会发生 非法的偏移类型 错误。 例: 您的数组包含一个对象或数组,其值为的某个值,当您尝试将其用作的索引键时,会收到警告。您必须确保包含所需的内容并正确访问它。

  • 问题内容: 为什么这小段代码在第6行和第10行中给出非法的类型错误开始(用于循环)…。我找不到任何不匹配的花括号… 我已经实现了Stack类 问题答案: 您不能在类级别使用循环。将它们放入a 或a 另外在没有这样的构造函数。 它应该是 另一个问题 只需将其更改为

  • 我正在学习Netbeans CRUD应用程序教程(修改为使用我自己的数据库),我发现了一个我根本无法理解的错误。 错误显示“类型的非法开始”;'预期,找不到符号 这是我的代码: 错误在最后4行: 我知道这很简单,但我不知道该怎么解决。我确信这是一个错位的“;”还是什么? 你肯定知道,我对Java是新手。 我已经做了教程所说的一切,但似乎无法解决这个问题... 任何帮助都是伟大的! 谢啦

  • 问题内容: 将我的php版本更新到5.4.0-3后,我收到一个奇怪的PHP错误。 我有这个数组: 当我尝试像这样访问它时,会收到奇怪的警告 我真的不想只编辑我的php.ini并重新设置错误级别。 问题答案: 请尝试这种方式。…我已经测试了此代码。

  • 对,第一次使用分页,无法使其在第一页之外工作(404错误)。这一切似乎都围绕着$offset变量展开,就好像我将offset的变量更改为整数(如15),它会在第一页上显示从第15行开始的结果-但是$offset- 控制器: 型号: URL(首页): URL(第二页): 我做错了什么? 虽然这与错误无关,但请查看:

  • 一切都清楚一次是UTC中的日期: