laravel Illégale type de décalage d'erreur
j'ai une page qui montre les détails d'un seul cas d'essai. Pour une raison quelconque, Je ne peux pas passer cette erreur, même pour envoyer le $id
. Voici mon contrôleur:
public function show($id)
{
$data =DB::table('TestCase')->where('TestCaseID', $id);
return view('managements.testcase-details')->with($data);
}
Voici l'erreur:
en vue.php ligne 180 à L'exception de Handleeexceptions - > handleError ('2', 'Illegal offset type', 'C:xampphtdocsterkwazmngvendorlaravelframeworksrcIlluminateViewView.php', '180', array('key' => object(Générateur de rapports), "valeur" => null))
2 réponses
Vous avez oublié un peu. Un get
et de définir le nom de la variable de données. Votre erreur signifie que vous passez un constructeur de requête plutôt que ses résultats. La deuxième erreur est que vous passez une valeur NULL
(deuxième paramètre dans with
).
$data =DB::table('TestCase')->where('TestCaseID', $id)->get();
return view('managements.testcase-details')->with('data', $data);
En vue data
comme vous utilisez un tableau: foreach($data ...)
.
cette méthode résout mon problème, je le montre ici comme un exemple -
Classe que nous voulons utiliser -
<?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;
}
classe de modèle personnalisé, j'ai copié la fonction de quelque part, je ne peux pas le renvoyer ici parce que je ne peux pas l'URL de Ressource je reçois ce de -
<?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);
}
}