items
id
name
sku
price
similar_items
id
item_main_id
item_detail_id
items
id name sku price
=====================================
1 FR1224 00001 12.9
2 FR2607 00002 12.3
3 FR0106 00003 11.5
=====================================
similar_items
id item_main_id item_detail_id
===========================================
1 1 2
2 1 3
class Item extends Model
{
public function similar_items(){
return $this->hasMany("App\Models\Inventory\SimilarItems",'item_main_id', 'id');
}
}
class SimilarItems extends Model
{
protected $with=['item'];
public function item(){
return $this->belongsTo("App\Models\Inventory\Item",'item_detail_id');
}
}
class ItemController extends Controller
{
public function getAll(Request $request)
{
$items=Item::all();
$items->load([
'similar_items'
]);
}
}
The Result is
[
{
"id": 1,
"name": "FR1224",
"similar_items": [
{
"item_main_id": 1,
"item_detail_id": 2,
"item": {
"id": 2,
"name": "FR2607"
}
},
{
"item_main_id": 1,
"item_detail_id": 3,
"item": {
"id": 3,
"name": "FR0106"
}
}
]
}
{
"id": 2,
"name": "FR2607",
"similar_items":[]
}
{
"id": 3,
"name": "FR0106",
"similar_items":[]
}
]
The Required Response
[
{
"id": 1,
"name": "FR1224",
"similar_items": [
{
"item_main_id": 1,
"item_detail_id": 2,
"item": {
"id": 2,
"name": "FR2607"
}
},
{
"item_main_id": 1,
"item_detail_id": 3,
"item": {
"id": 3,
"name": "FR0106"
}
}
]
}
{
"id": 2,
"name": "FR2607",
"similar_items":[
{
"item_main_id": 1,
"item_detail_id": 2,
"item": {
"id": 1,
"name": "FR1224"
}
}
]
}
{
"id": 3,
"name": "FR0106",
"similar_items":[
{
"item_main_id": 1,
"item_detail_id": 2,
"item": {
"id": 1,
"name": "FR1224"
}
}
]
}
]
The Problem is i want to use Or Condition, first match with item_main_id and second match item_detail_id