0

In meinem Controller-Fehler Query Builder in Laravel Join 5.3

$thread = DB::table('threads') 
     ->join('users', 'users.id', '=', 'threads.user_id') 
     ->select('users.name') 
     ->orderBy('threads.id', 'DESC') 
     ->get(); 

return view('thread.index', compact('thread')); 

In meinem index.blade

@foreach($thread as $item) 
        <td> {{ $item->thread }} </td> 
        <td> {{ $item->deskripsi }} </td> 
        <td> <p> Oleh : {{ $item->user_id }}</p> </td> 
         <td> {{ $item->created_at->diffForHumans() }} </td> 

    @endforeach    

und Fehler

Undefined property: stdClass::$thread (View: C:\xampp\htdocs\Aplikasi_Kelas_Server\resources\views\thread\index.blade.php) 

Haben Sie jede mögliche Lösung? Ich möchte Benutzer-ID anzeigen werden Name in Tabelle Benutzer

+0

Können Sie uns den Inhalt von '$ thread' zeigen? – Jerodev

+0

Sie verwenden hier nicht 'Eloquent'. –

+0

ja es tut mir leid. Sein Abfrage-Generator. – Feboy

Antwort

2

Sie sind eine Eigenschaft wie thread, ruft deskripsi

<td> {{ $item->thread }} </td> 
<td> {{ $item->deskripsi }} </td> 

Aber Sie haben es nicht durch Ihre Abfrage ausgewählt. Sie wählen nur die name !! So fügen Sie die zusätzliche Spalte in Ihrer Abfrage wie-

$thread = DB::table('threads') 
     ->join('users', 'users.id', '=', 'threads.user_id') 
     ->select('users.name', 'threads.thread', 'threads.deskripsi') 
     ->orderBy('threads.id', 'DESC') 
     ->get(); 
+0

danke es funktioniert! Ich ändere nur in users.name werden Benutzer. * – Feboy

+0

nur vorsichtig sein, manchmal können Sie den gleichen Spaltennamen in beiden Tabellen haben, dann mit Platzhalter (*) erhalten Sie einen Fehler. Wenn Benutzer beispielsweise eine Spalte 'name' haben und Threads auch eine Spalte mit dem Namen' name' haben, wird 'users. *, threads. *' den Fehler auslösen. – Atiqur

0

Es hängt von der Beziehung, die Sie in Ihren Modellen definiert haben. Wenn Benutzer über Threads verfügen, sollten Sie einfach die gewünschten Benutzer abrufen und sie an compact senden. Verwenden Sie diese Funktion in Ihrem User-Modell

public function getThreads() 
    { 
     return $this->hasMany(Threads::class); 
    } 

und wenn Ihre Beziehungen korrekt sind, sollten Sie in der Lage, die Fäden in der Klinge mit diesem zu erhalten:

@foreach($users as $user) 
     @foreach($user->getThreads as $thread) 
        <td> {{ $thread->thread }} </td> 
        <td> {{ $thread->deskripsi }} </td> 
        <td> <p> Oleh : {{ $thread->user_id }}</p> </td> 
        <td> {{ $thread->created_at->diffForHumans() }} </td> 
     @endforeach 
@endforeach 
+0

oke danke für deine lösung – Feboy