错误查询生成器加入Laravel 5.3

时间:2017-02-07 11:45:30

标签: laravel eloquent laravel-5.3 laravel-query-builder laravel-eloquent

在我的控制器中

$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'));

在我的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            

和错误

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

有任何解决方案吗?我想user_id show成为表用户的名字

2 个答案:

答案 0 :(得分:2)

您正在调用某些属性,例如threaddeskripsi

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

但您没有通过查询选择它。你只选择name !!因此,请在查询中添加其他列,例如 -

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

答案 1 :(得分:0)

这取决于您在模型中定义的关系。如果用户有线程,那么您应该只检索所需的用户并使用compact发送到刀片。在用户模型中使用此功能

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

如果你的关系是正确的,你应该能够通过这个获得你刀片中的线程:

@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