无法从表模型中获取名称并使用 Laravel 将其显示在视图中

我正在尝试使用存储在用户表中的我subject_name从表中获取 ,但是每当我尝试这样做时,我都会收到此错误。有什么帮助吗?subjectsubject_id


这种关系是一个用户只能注册一个主题,多个用户可以选择一个主题,因此是一对多的关系


`Illuminate \ Database \ QueryException (42S02)

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'myunimentor_database.subject_user' doesn't exist (SQL: select `subjects`.*, `subject_user`.`user_id` as `pivot_user_id`, `subject_user`.`subject_id` as `pivot_subject_id` from `subjects` inner join `subject_user` on `subjects`.`id` = `subject_user`.`subject_id` where `subject_user`.`user_id` = 1)

Previous exceptions

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'myunimentor_database.subject_user' doesn't exist (42S02)`

用户模型


<?php


namespace App;


use Illuminate\Notifications\Notifiable;

use Illuminate\Contracts\Auth\MustVerifyEmail;

use Illuminate\Foundation\Auth\User as Authenticatable;


use App\UserType;

use App\Subject;


class User extends Authenticatable

{

    use Notifiable;


    /**

     * The attributes that are mass assignable.

     *

     * @var array

     */

    protected $fillable = [

        'first_name', 'last_name', 'type', 'username', 'password',

    ];


    /**

     * The attributes that should be hidden for arrays.

     *

     * @var array

     */

    protected $hidden = [

        'password', 'remember_token',

    ];


    /**

     * The attributes that should be cast to native types.

     *

     * @var array

     */

    protected $casts = [

        'email_verified_at' => 'datetime',

    ];


    public function getAllUsers() {

        return User::all();

     }


     public function userTypes()

     {

         return $this->belongsTo('App\Users');

     }


     public function subjects()

    {

        return $this->belongsToMany('App\Subject');

    }

}


达令说
浏览 144回答 2
2回答

眼眸繁星

在您的用户模型中,关系应该是belongsTo()&nbsp;public function subject(){&nbsp; &nbsp; return $this->belongsTo('App\Subject','subject_id','id');}现在您可以访问您的主题名称 Auth::user()->subject->subject_name正如您所说,一个用户只有一个主题,因此用户 只属于一个主题。主题可以有多个用户,这意味着HasMany。 用户模型 ->所属主题 主题模型 ->拥有用户的HasMany请在此处查看更多信息。https://laravel.com/docs/5.8/eloquent-relationships#one-to-many

守着一只汪

在您的用户模型中,关系应该是belongsTo()&nbsp;public function subject(){&nbsp; &nbsp; return $this->belongsTo('App\Subject','subject_id','id');}现在您可以访问您的主题名称 Auth::user()->subject->subject_name正如您所说,一个用户只有一个主题,因此用户 只属于一个主题。主题可以有多个用户,这意味着HasMany。 用户模型 ->所属主题 主题模型 ->拥有用户的HasMany请在此处查看更多信息。https://laravel.com/docs/5.8/eloquent-relationships#one-to-many您的belongsToMany关系导致了问题。它导致 laravel 认为有一个名为subject_user的数据透视表,但遗憾的是没有数据透视表。所以改变你的关系到belongsTopublic function subject(){&nbsp; &nbsp; return $this->belongsTo('App\Subject','subject_id');}这是另一个问题。在可填充数组中的用户模型中,没有 subject_id。所以subject_id 不会保存在数据库中。将此添加到您的可填充数组中。
打开App,查看更多内容
随时随地看视频慕课网APP