我想要获得创建的用户的名称是自己的线程。像迈克尔一样关于食物。因此,食物线的底部应该是迈克尔的名字。
我为此编写了代码,但它并没有真正起作用。也许有人可以找到错误。
我有两个型号。线程模型和用户模型。
线程模型:
<?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}}
我得到的错误信息是:
未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ name(查看:/var/www/laravel/logs/resources/views/test/show.blade.php)
我希望有人可以帮助我。
答案 0 :(得分:0)
将其更改为
{{$threaduser->userthread->name}}
将Thread Class中的userthread()函数更改为
public function userthread() {
return $this->belongsTo('App\User','user_id', 'id');
}
答案 1 :(得分:0)
get()
为您提供了一个不是模型的集合,您必须对它进行预测,例如
@foreach ($threadusers as $threaduser)
{{ $threaduser->userthread->name }}
@endforeach
如果每个用户只有一个主题,则使用first
代替get
。
当然,取决于你想做什么。