Laravel 5.2:定义用户并从其他数据库表中获取信息

时间:2017-11-24 05:58:44

标签: php mysql laravel-5.2 laravel-eloquent

更新我已经解决了问题我忘记了get()这里

$userDiplomas = UserDiploma::query()->where( 'user_id', Auth::user()->id );

但仍然不明白为什么我无法使用此

Auth::user()->diplomas as $diploma

这是我的案例

每个用户可以注册文凭或更多,现在在用户档案中我想显示用户注册的所有文凭。

我制作了一个名为user_diplomas的新表,这是表格迁移

$table->integer( 'user_id' )->unsigned();
$table->foreign( 'user_id' )->references( 'id' )->on( 'users' );
$table->integer( 'diploma_id' )->unsigned();
$table->foreign( 'diploma_id' )->references( 'id' )->on( 'diplomas' );

当用户登录并立即点击注册时,它会向user_diplomas表(user_id,diploma_id)插入2个值,这样可以正常工作。

  

现在出现了问题

我需要获取用户注册的文凭并在其个人资料中显示,请查看User模型和UserDiploma模型。

用户模型

public function diplomas() {
    return $this->hasMany( 'App\Models\UserDiploma', 'diploma_id' );
}

UserDiploma Model

public function diplomaId() {
    return $this->belongsTo( 'App\Models\Diploma', 'diploma_id' );
}

现在试图取得我试过的文凭

@foreach(Auth::user()->diplomas as $diploma)
....
..........
@endforeach

但没有结果出来!

我也尝试在HomeController

中做这样的事情
public function index() {
        $userDiplomas = UserDiploma::query()->where( 'user_id', Auth::user()->id );
        return view( 'trainees.profiles', compact('userDiplomas') );
}

但它也没有用。

任何想法请如何使其发挥作用。

1 个答案:

答案 0 :(得分:0)

更改'用户'模特到

public function diplomas() {
    return $this->hasMany( 'App\Models\UserDiploma', 'diploma_id','diploma_id' );
}