【发布时间】:2020-07-09 08:56:40
【问题描述】:
我是 laravel 的新手, 我正在尝试为已登录的用户获取头像,但我不断收到错误消息。
调用未定义的方法 Illuminate\Database\Eloquent\Relations\HasOne::getAvatar()(查看:D:\PI\Project\crud\resources\views\layouts\includes\navbar.blade.php)
这是我的看法
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="{{auth()->user()->mahasiswa()->getAvatar()}}"
class="img-circle" alt="Avatar">
<span>{{auth()->user()->name}}</span> <i class="icon-submenu lnr lnr-chevron-down"></i></a>
<ul class="dropdown-menu">
<li><a href="/admin/{{$mhs->id}}/profile"><i class="lnr lnr-user"></i> <span>My Profile</span></a></li>
<li><a href="#"><i class="lnr lnr-envelope"></i> <span>Message</span></a></li>
<li><a href="#"><i class="lnr lnr-cog"></i> <span>Settings</span></a></li>
<li><a href="/logout"><i class="lnr lnr-exit"></i> <span>Logout</span></a></li>
</ul>
</li>
这是我的控制器
public function profile($id)
{
$mhs = Mahasiswa::find($id);
return view('admin.profile', ['mhs' => $mhs]);
}
马哈西瓦模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\User;
class Mahasiswa extends Model
{
protected $table = 'mahasiswa';
protected $fillable = ['nama', 'npm', 'kelas', 'fakultas', 'program_studi', 'email', 'avatar', 'document', 'user_id'];
public function getAvatar()
{
if(!$this->avatar){
return asset('images/default.png');
}
return asset('images/'.$this->avatar);
}
public function user()
{
return $this->belongsTo(User::class)->withDefault(['avatar' => 'default.png']);
}
}
用户模型
public function mahasiswa()
{
return $this->hasOne(Mahasiswa::class);
}
【问题讨论】:
标签: laravel laravel-blade eloquent-relationship