J'exécute un test dans mon contrôleur juste pour m'assurer que j'obtiens une sortie. Malheureusement, j'obtiens une erreur "Essayer d'obtenir la propriété d'un non-objet". Je veux juste voir le champ de nom affiché selon le code ci-dessous.

Voici mon modèle (Member.php):

namespace App;

use Illuminate\Database\Eloquent\Model;

class Member extends Model
{
    //
}

Voici mon fichier MemberController.php:

public function show($id)
    {
        $data = array();
        $data['id'] = $id;
        $member = Member::find('$id'); 

        //Test
        echo $member->name;
        exit;

        return view('members/show', $data); 
    }

Ceci est mon itinéraire:

Route::get('members/{member}', 'MemberController@show');

C'est mon schéma où la table est nommée membres et le champ de nom est défini: entrez la description de l'image ici

Comme je l'ai dit, lorsque j'exécute mon URL à Some_url / members / 1, j'obtiens une erreur "Essayer d'obtenir la propriété d'un non-objet"

Où vais-je mal?

1
jproux 23 mai 2018 à 12:24

4 réponses

Meilleure réponse
$member = Member::find('$id'); 

Cette ligne est le coupable.

Changez-le en:

$member = Member::find($id);

Les raisons doivent être évidentes;)

5
Loek 23 mai 2018 à 09:26

N'incluez pas non plus «exit» avant «return». Il ne montrera pas la vue si vous le faites comme ça.

0
Rowel Abenio 23 mai 2018 à 09:31

Essayez Liaison de modèle d'itinéraire. Cela semble-t-il plus clair?

public function show(Member $member)
{
    return view('members/show', ['id' => $member->getKey()]); 
}
0
Paul Androshchuk 23 mai 2018 à 09:52

$member = Member::findOrFail($id);

OU

$member = Member::find($id);

Lorsque vous utilisez une variable comme paramètre, ne l'utilisez pas entre guillemets

0
Afsal 23 mai 2018 à 09:50