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))

1
demandé sur Connor Low 2017-08-20 11:41:13

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 ...) .

3
répondu shukshin.ivan 2017-08-20 08:51:20

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);
    }
}
0
répondu Sadidul Islam 2018-08-05 03:44:17