По умолчанию он вернет SomePackage\Doctor
, потому что этот код в SomePackage
:
public function patients()
{
return $this->hasMany(Patient::class);
}
Здесь Patient::class
- это специальная константа, которая содержит полный путь (с пространством имен) к классу Patient. Он содержит что-то вроде SomePackage\Patient
, этот путь принадлежит самому пакету. Таким образом, вы не можете изменить его, только используя другой класс с тем же именем.
Но вы можете redefine
весь метод внутри вашего App\Doctor
класса.
namespace App;
use SomePackage\Doctor as VendorDoctor
class Doctor extends VendorDoctor
{
public function patients()
{
return $this->hasMany(\App\Patient::class);
}
}
Послечто App\Doctor
вернет связь с App\Patient
.
$doctor = \App\Doctor::find($id);
$patient = $doctor->patient;
//$patient containt Collection of App\Patient models
На самом деле вам даже не нужно определять полный \App\Patient:class
путь, потому что здесь вы уже находитесь в App
пространстве имен, я просто добавляюэто для лучшего понимания.