2016-03-08 2 views
0

Я не хочу, чтобы имя пользователя, создавшего собственный поток. Как Майкл сделал нить о еде. Так что на дне пищевой нитки должно быть имя Майкла.Как получить имя пользователя в каждом потоке (Laravel)?

Я написал код для этого, но на самом деле это не работает. Может быть, кто-то из вас может найти ошибку.

У меня есть две модели. Модель потока и модель пользователя.

модель резьбы:

<?php 
namespace App\Models\Thread; 

use Illuminate\Database\Eloquent\Model; 
use App\User; 

class Thread extends Model { 
    public $table = 'thread'; 
    public $fillable = [ 
     'thread', 
     'content', 
     'user_id' 
    ]; 

    public function userthread() { 
     return $this->belongsTo('User','user_id', 'id'); 

модель пользователя:

<?php 

namespace App; 

    use ... 

    protected $table = 'users'; 

    protected $fillable = ['name', 'email', 'password']; 

    protected $hidden = ['password', 'remember_token']; 

    public function threaduser() { 
     return $this->hasMany('App\Models\Thread\Thread','user_id', 'id'); 
    } 
} 

и теперь метод контроллера, где я пытаюсь получить имя:

public function show($id) 
    { 
     $thread = Thread::query()->findOrFail($id); 
     $threaduser = Thread::where('user_id', Auth::user()->id)->with('userthread')->get(); 
     return view('test.show', [ 
      'thread' => $thread, 
      'threaduser' => $threaduser 
     ]); 
    } 

в моем HTML :

{{$threaduser->name}} 

Сообщение об ошибке я получаю:

Не определено свойство: Осветить \ Database \ Eloquent \ Коллекция :: $ Имя (Вид: /var/www/laravel/logs/resources/views/test/show.blade. php)

Я надеюсь, что кто-то может мне помочь.

ответ

0

изменить его

{{$threaduser->userthread->name}} 

userthread изменения() функции в классе Thread к

public function userthread() { 
    return $this->belongsTo('App\User','user_id', 'id'); 
} 
+0

Я сделал, но теперь я получаю это сообщение об ошибке: Class 'Пользователь' не найден – ItzMe488

+0

Я обновил свой ответ – oseintow

+0

Я сделал, но теперь у меня такая же ошибка, как и раньше: Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection :: $ userthread (в моем html) – ItzMe488

0

get() дает вам коллекцию не модели вы должны либо сделать Еогеасп на него, как

@foreach ($threadusers as $threaduser) 
    {{ $threaduser->userthread->name }} 
@endforeach 

Или использовать first вместо get, если имеется только один поток на пользователя.

В зависимости от того, что вы хотите сделать, конечно.

+0

Я сделал это, но теперь это дает мне только каждый пользователь, который у меня есть в моей базе данных под потоком:/ – ItzMe488

+0

Вы сделали то, что именно? – PeterPan666

+0

Я использовал петлю foreach, которую вы мне дали. И теперь я просто получаю каждого пользователя в потоке, написанном – ItzMe488

Смежные вопросы