2017-03-16 6 views
2

Ich habe ein Problem in Laravel. Ich habe meinen ganzen Tisch meine Ansicht wie dies von meinem Controller übergeben:Ausgabewert von Tabelle in Sicht

 @foreach($users as $user => $value) 
      <div class="projectBox"> 
       <br><span class="projectBoxName">{{ $value->name }}</span> 
       @php 
        echo Form::image('/images/edit.png', "",['class' => "editUserBtn", 'userId' => $value->id]); 
       @endphp 
       <br><span class="projectBoxSmallText projectBoxEmail">{{ $value->email }}</span> 
       <br><span class="projectBoxSmallText projectBoxId">ID: {{ $value->id }}</span> 
       <br><span class="projectBoxSmallText projectBoxProjects">Currently no projects</span> 
      </div> 
     @endforeach 

Aber ich auch:

$usersTable = DB::table('users')->get(); 
return view('users')->with('users', $usersTable); 

In einer foreach-Schleife I perfekt jeden der Werte wie dies aus meiner Sicht bekommen müssen diese Werte außerhalb meiner foreach-Schleife zugreifen, wie kann ich das tun?

echo Form::text('email', "$users->$value->email", array('placeholder' => "Email")); 

nicht funktioniert ...

Das gibt mir das ganze Objekt in dieser Form

[{"id":"1","name":"Administrator","email":"[email protected]","password":"$2y$10$Re3Ahf.SwU5vj4UvtU5Dy.jxaZMsUNC2WhuJMwsNy9gu6TST4PuRG","remember_token":null}] 

Wie nur die E-Mail bekommen? Ich habe auch versucht, Indizes zu verwenden, aber diese funktionierten nicht. Danke!

Edit: Voll Situation: Ich habe eine Liste der Benutzer mit ihren zusätzlichen Informationen (E-Mail, Telefon, ...). In diesen Benutzerboxen gibt es eine Schaltfläche, die "Benutzer bearbeiten" sagt, wenn ich auf "Modal" klicke, öffnet sich die aktuelle Mail und das Telefon. Daher kann ich in meinem Controller nicht sagen, dass die WHO-Mailadresse zurückgegeben werden soll, da ich nur weiß, dass der Benutzer im Moment auf eine clientseitige Schaltfläche klickt. Bilder:http://imgur.com/a/krDrY (Bearbeiten-Schaltfläche ist der kleine Kreis mit drei Punkten).

+0

Gibt es einen bestimmten Benutzerdatensatz, dessen E-Mail Sie verwenden möchten? Wenn dies der Fall ist, würde ich dieses spezifische Element in Ihrem Controller herausholen, es in einer separaten Variablen an Ihre Sicht übergeben und es so verwenden. –

+0

@ JeffLambert Das Problem ist, dass ich nur den BENUTZER kenne, von dem ich die E-Mail abholen muss, wenn der Benutzer eine Schaltfläche auslöst. –

+0

Wenn Sie die E-Mail über eine clientseitige Aktion suchen müssen, wäre es wahrscheinlich besser, wenn Sie diese Logik auf die Clientseite stellen und nicht nur auf dem Server versuchen. Sie können ein Datenattribut zu einem Objekt hinzufügen, das beim Klicken auf die Schaltfläche nachgeschlagen werden kann, und herausfinden, was die E-Mail auf diese Weise ist. –

Antwort

1

Um eine Sammlung zuzugreifen, ohne Schleife zu verwenden, sollten Sie Sammelmethoden verwenden:

$users = User::get(); 
$users->where('name', 'John Smith')->first()->email 

Dieser Wille Erstellen Sie keine zusätzlichen Abfragen, da Sie bereits Daten geladen haben.

Wenn Sie nur ein Benutzer laden möchten, verwenden Sie first() statt get():

$users = User::first(); 

Wenn Sie get() verwenden werden und dann [0] oder first() wie einige Leute hier empfehlen, Sie alle Benutzer-Daten laden werden in den Speicher für jede Anfrage, die Ihren Server überlastet.

Auch die Verwendung von Indizes für den Zugriff auf Daten (wie $users[4]['email']) ist eine schlechte Praxis. Vermeiden Sie es wenn möglich.

+0

Ich habe meinen Beitrag bearbeitet. Ich habe die ganze Tabelle aus dem oben genannten Grund in meine Sicht importiert. –

0

Sie müssen als erstes Element hinzufügen, indem [0]

echo Form::text('email', $users[0]->email, array('placeholder' => "Email")); 

Zugabe schlage ich vor Gebrauch ->first() statt ->get() einzelnes Objekt zu erhalten. Und entfernen Sie die Schleife und verwenden Sie wo Sie wollen.

-2

Sieht aus wie es als JSON kommt. Versuchen Sie json_decode($data) und $data->email, um dieses Attribut zu erhalten.

+0

Dachte auch, versuchte es und funktionierte nicht. ;) –

0

Sie sind eine Sammlung von users mit dem ersten Benutzer E-Mail zu erhalten, haben Sie

$users->first()->email; 
Verwandte Themen