我有一个页面显示单个测试用例的详细信息。由于某种原因,即使发送,我也无法克服此错误$id。这是我的控制器:
public function show($id)
{
$data =DB::table('TestCase')->where('TestCaseID', $id);
return view('managements.testcase-details')->with($data);
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
在View.php第180行的HandleExceptions-> handleError('2','Illegal offset type','C:\ xampp \ htdocs \ terkwazmng \ vendor \ laravel \ framework \ src \ Illuminate \ View \ View.php',' 180',array('key'=> object(Builder),'value'=> null))
你忘了一点 A get和设置数据变量名。您的错误意味着,您传递的是查询生成器而不是其结果。第二个错误是您传递了一个NULL值(中的第二个参数with)。
$data =DB::table('TestCase')->where('TestCaseID', $id)->get();
return view('managements.testcase-details')->with('data', $data);
Run Code Online (Sandbox Code Playgroud)
在视图中使用,data就像您使用数组:一样foreach($data ...)。
这个方法解决了我的问题,我在这里展示它作为一个例子 -
我们想使用的类 -
<?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;
}
Run Code Online (Sandbox Code Playgroud)
自定义模型类,我从某处复制了该函数,我无法在这里引用他,因为我无法获取此 URL 的资源 URL -
<?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);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我的问题:我的表没有自动增量列,并且 Laravel 试图访问自动增量列,因为 Laravel 假设每个表都有一个自动增量 id,所以 Laravel 向我发送了此错误。
解决方案:添加 public $incrementing = false;到您的模型类
| 归档时间: |
|
| 查看次数: |
17924 次 |
| 最近记录: |