当前位置: 首页 > 知识库问答 >
问题:

我怎样才能把这段雄辩的关系做好呢?

米项禹
2023-03-14

我有一个用户模型和一个学生模型,我已经为它们建立了关系,但是当我尝试

$学生-

我得到这个错误

“正在尝试获取非对象的属性全名”

以下是我的用户模型代码:

<?php

namespace App;


use App\Assignment;
use App\Model\Quiz;
use App\Model\Course;
use App\Topic;
use App\Model\Guardian;
use App\Model\Student;
use App\Model\Teacher;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable, HasRoles, SoftDeletes;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'fullname',
        'email',
        'avatar',
        '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 setPasswordAttribute($password)
    {
        $this->attributes['password'] = bcrypt($password);
    }



    public function guardian()
    {
        return $this->belongsTo(Guardian::class);
    }

    public function teacher()
    {
        return $this->belongsTo(Teacher::class);
    }

    public function student()
    {
        return $this->belongsTo(Student::class);
    }

    public function assignments()
    {
        return $this->hasMany(Assignment::class);
    }

    public function quizzes()
    {
        return $this->hasMany(Quiz::class);
    }

    public function courses()
    {
        return $this->hasMany(Course::class);
    }

    public function topics()
    {
        return $this->hasMany(Topic::class);
    }

    public function levels()
    {
        return $this->hasMany(Level::class);
    }
}

这是我的学生模型代码

<?php

namespace App\Model;

use App\User;
use App\Model\Course;
use App\Assignment;
use App\Level;
use App\Model\DoneQuiz;
use App\Model\Teacher;
use App\Model\Guardian;
use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    protected $fillable = ['user_id', 'level_id', 'guardian_id'];

    public function user()
    {
        return $this->belongsTo(User::class);
    } 

    public function courses()
    {
        return $this->hasMany(Course::class);
    } 

    public function assignments()
    {
        return $this->hasMany(Assignment::class);
    }

    public function level()
    {
        return $this->hasOne(Level::class);
    }

    public function teachers()
    {
        return $this->hasMany(Teacher::class);
    }

    public function guardian()
    {
        return $this->hasOne(Guardian::class);
    }

    public function donequizzes()
    {
        return $this->hasMany(DoneQuiz::class);
    }
}

即使我试图利用这种关系来获取数据,比如

“学生id”=

我得到这个错误

“对未定义方法Illumb\Database\Eloquent\Relations\BelongsTo::id()的BadMethodCallException调用”

共有1个答案

公羊奇
2023-03-14

当你使用学生()时,它返回一个查询生成器

要么改成简单的学生

'student_id' => auth()->user()->student->id

 'student_id' => auth()->user()->student()->first()->id
 类似资料:
  • 我有适当的基于ORM的post和tags表。在数据透视表上分配给post的标记。发帖- 这是我的数据库: 我想检索所有有特殊标签名称的帖子。

  • 我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?

  • 我怎么能把这条线移到右边。我正在使用智能的想法,我使用了导致问题的自定义字体。

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 我试图把Flink和德鲁伊联系起来。 然而,我不知道如何正确地做到这一点。 在此Flink留档中,"bootstrap.servers"设置为"localhost:9092"。 这是否意味着我可以使用Apache Kafka摄取直接连接,因为下面设置了示例主管规范? 除了Flink,我还需要管理Kafka吗?或者我应该做其他事情来连接Flink和德鲁伊?