假設我有一個Course
模式是這樣的:使用關係
class Course extends Model
{
public $primaryKey = 'course_id';
protected $appends = ['teacher_name'];
public function getTeacherNameAttribute()
{
$this->attributes['teacher_name'] = $this->teacher()->first()->full_name;
}
public function teacher()
{
return $this->belongsTo('App\User', 'teacher', 'user_id');
}
}
而在另一方面是有User
模式是這樣的:
class User extends Authenticatable
{
public $primaryKey = 'user_id';
protected $appends = ['full_name'];
public function getFullNameAttribute()
{
return $this->name . ' ' . $this->family;
}
public function course()
{
return $this->hasMany('App\Course', 'teacher', 'user_id');
}
}
正如你所看到的那些之間有一個hasMany
關係。
用戶模型中有一個full_name
訪問器。
現在我想一個teacher_name
訪問添加到使用它的teacher
關係,並得到老師的full_name
並追加到Course
總是Course
模型。
事實上,我希望每當打電話給Course
模型時,都會將其中的教師名稱與其他屬性一起使用。
但每一次,叫場模型時,我得到這個錯誤:
exception 'ErrorException' with message 'Trying to get property of non-object' in D:\wamp\www\lms-api\app\Course.php:166
這是指這條線課程模式:
$this->attributes['teacher_name'] = $this->teacher()->first()->full_name;
我不知道我該怎麼解決這和什麼問題確切。
'$這個 - >老師() - > first()',我想知道,它是否需要' - > first()'或不。 –
它沒有。 '$ this-> teacher-> full_name'將會訣竅。 –