Хотя я бы переименовал вашу AbstractModel , потому что это может вызвать серьезную путаницу у других программистов и не следовать соглашениям, я думаю, я понял, что вы ищете:
class AbstractModel extends Model
{
// protected $table = 'abstract';
protected $fillable = [
'id',
'created_at',
'created_by' ,
'abstract_no',
'pr_number',
'proc_details',
'office',
'requestor_name'
];
public function offices()
{
return $this->hasOne('App\Office', 'id', 'office');
}
public function purchaseRequestItemModels()
{
return $this->hasOne('App\PurchaseRequestItemModel', 'id', 'pr_number');
}
}
Class Office extends Model
{
...
public function abstractModels()
{
return $this->belongsTo('App\AbstractModel', 'office', 'id');
}
}
class PurchaseRequestItemModel extends Model
{
...
public function abstractModels()
{
return $this->belongsTo('App\AbstractModel', 'pr_number', 'id');
}
}
Вы можетезатем перейдите к созданию экземпляра AbstractModel и перехватите связанные офисы и номера PRN, как показано ниже:
$abstract = AbstractModel::find($id);
//These method calls return Objects of the type:
// Office
$abstract->offices();
//PurchaseRequestItemModel
$abstract->purchaseRequestItemModels();
Теперь, пожалуйста, проверьте стандарты кодирования , чтобы еще больше улучшить семантику и качество кода, так как это поможет ОЧЕНЬ многов будущем!
ПРИМЕЧАНИЕ: Я понимаю, что у вас могут быть другие classes
, которые общаются друг с другом, и вы можете достичь того же результата, если создадите отношения, как я иллюстрировал выше.
Дальнейшее объяснение отношений можно найти здесь