2017-10-02 3 views
0

J'ai déjà une simple recherche avec table où je filtre les données par nom, prénom, numéro social etc ... Mais, j'ai besoin de quelque chose de différent, j'ai besoin de champ de recherche où recherchera par ID et affichera d'autres informations (nom, prénom, téléphone ...) si je l'ai trouvé et cliquez sur soumettre.Laravel: Recherche par ID et affichage des données de ligne s'il est trouvé

Voici comment mon formulaire de recherche regard:

{!! Form::open(['route'=>'search.id', 'method'=>'GET']) !!} 
<div class="input-group"> 
    {!! Form::number('term', Request::get('term'), ['class'=>'form-control', 'placeholder'=>'ID']) !!} 
    <span class="input-group-btn"> 
    {!! Form::button('<i class="fa fa-search"></i>', ['type' => 'submit', 'class'=>'btn btn-default']) !!} 
    </span> 
</div> 
{!! Form::close() !!} 

Mon contrôleur jusqu'à présent:

public function index(Request $request) 
{ 
    $ids = DB::table('electoral_list') 
     ->where('town_id', Auth::user()->town_id) 
     ->where('id', intval($request->get('term'))) 
     ->first(); 

    if(is_null($ids)) 
    { 
     return redirect()->back()->with('error', 'Your Message'); 
    } 

    return view('search.index', compact('ids')); 
} 

et ici je veux afficher un nom si j'ai trouvé id:

<div class="col-sm-6"> 
    <div class="form-group"> 
    {!! Form::text('name', $ids->name, null, ['class'=>'form-control', 'placeholder'=>'Name']) !!} 
    </div> 
</div> 

Maintenant, j'obtiens l'erreur: (2/2) ErrorException Erreur d'analyse: erreur de syntaxe, un attendu « < »

+0

J'ajoute du code ce que j'ai maintenant, avec une erreur. Désolé de ne pas avoir avant. –

+0

Trop d'informations. Il y a beaucoup de code ici qui n'a pas besoin d'être dans votre question. Affinez votre problème afin que nous puissions vous aider. –

+0

Je suppose que je peux tout supprimer lorsque je montre comment je l'ai fait avec mon autre recherche, mais je dois alors changer toute la question. Je pensais que cela vous aiderait à comprendre où je vais avec mon code et à me guider à quel point il est censé ressembler. Mais si c'est la règle, je le ferai. mis à jour ... –

Répondre

0

Je vois une erreur de syntaxe avec votre lame, il suffit de faire comme ça:

{!! Form::text('name', $ids->name, null, ['class'=>'form-control', 'placeholder'=>'Name']) !!} 

Je pense que c'est la raison de votre erreur:

ErrorException Parse error: syntax error, unexpected '<'

Maintenant, vous pouvez changez le code comme ceci:

public function index(Request $request) 
{ 
    $ids = DB::table('electoral_list') 
     ->where('town_id', Auth::user()->town_id) 
     ->where('id', intval($request->get('term'))) 
     ->first(); 

    if(is_null($ids)) 
    { 
     // Do somthing if no result e.g. 
     Session::flash('no_id', 'ID does not exist!') 
     return redirect()->back(); 
    } 

    return view('search.index', compact('ids')); 
} 

Si la colonne est unique, vous ne devez pas utiliser like

+0

Oui, cela supprime l'erreur. Maintenant, il affiche le nom avec l'ID de 1, devinez en raison de la fonction first() et sans soumettre. J'ai besoin d'afficher le nom quand je saisis un identifiant. –

+0

Maintenant, j'obtiens: (1/1) BadMethodCallException Appel à la méthode non définie Illuminate \ Database \ Query \ Builder :: firstOrFail() –

+0

Version 5.5. Mis à jour à partir de 5.4 –