hasOne

class PurchaseDetail extends Model

{

use HasFactory;



public function _items(){

return $this->hasOne(Inventory::class,'id','_item_id')->select('id','_item as _name','_unit_id','_unique_barcode','_pur_rate','_barcode')->with(['_units']);

}

( extends Model – This means PurchaseDetail is an Eloquent model, representing a table ( purchase_details) in the database. )



Relationship Method: _items() method name



$this->hasOne(Inventory::class, 'id', '_item_id')



$this->hasOne(Inventory::class, 'id', '_item_id')

Table

column

Relationship

purchase_details

_item_id

Hasone

Inventory

id



->select('id','_item as _name','_unit_id','_unique_barcode','_pur_rate','_barcode')

These columns retrieved from the Inventory table.

So when you access $purchaseDetail->_items, you only get these columns:

id, _name, _unit_id, _unique_barcode, _pur_rate, _barcode








class Inventory extends Model

.
…..

public function _units(){
return $this->hasOne(Units::class,'id','_unit_id')->select('id','_name','_code');

}

Model Name

Table Name

Key Columns

Relationship

PurchaseDetail

purchase_details

id, _item_id, other purchase fields

hasOne → Inventory (_items)

Inventory

inventories

id, _item, _unit_id, _unique_barcode, _pur_rate, _barcode

hasOne → Units (_units)

Units

units

id, _name, _code

-

2. Relationships

  1. PurchaseDetail → Inventory

  2. Inventory → Units