Laravel Eloquent 4 таблицы отношений - PullRequest
0 голосов
/ 20 октября 2018

enter image description here

структура таблицы моей базы данных

это моя модель покупки

class Purchase extends Model
{
   public function supplierDetails(){
        return $this->belongsTo('App\Supplier', 'supplier_id');
    }
    public function purchasedItems(){
        return $this->hasMany('App\PurchasedItem', 'purchase_id');
    }
}

это мой контроллерmethod

 public function getReport(){
        $result =  Purchase::with('supplierDetails', 'purchasedItems')->get();
        return $result;
    }

это мой результат json

[
    {
        "id": 74,
        "supplier_id": 3,
        "invoice_no": "wds2",
        "supplier_details": {
            "id": 3,
            "name": "alexy" 
        },
        "purchased_items": [
            {
                "id": 114,
                "purchase_id": 74,
                "item_id": 2
            },
            {
                "id": 115,
                "purchase_id": 74,
                "item_id": 3
            }
        ]

    }
]

я могу установить отношения между этими тремя моделями 'Supplier', 'Purchase' и 'PurchaseItem', но не могу установить отношения с 'Модель предмета

Я хочу, чтобы JSON-ответ был таким

[
    {
        "id": 74,
        "supplier_id": 3,
        "invoice_no": "wds2",
        "supplier_details": {
            "id": 3,
            "name": "alexy" 
        },
        "purchased_items": [
            {
                "id": 114,
                "purchase_id": 74,
                "item_id": 2,
                "item_details": {
                    "id": 2,
                    "name": "item1" 
                }
            },
            {
                "id": 115,
                "purchase_id": 74,
                "item_id": 3,
                "item_details": {
                    "id": 3,
                    "name": "item2" 
                }
            }
        ]

    }
]

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Я сделал некоторые изменения, и приведенный ниже код работает ..

 public function getAll(){
        $array =  Purchase::with('supplierDetails', 'purchasedItems')->get();
        $purchases = json_decode($array,true);

        $result = array();
        foreach($purchases as $p){
            $itemsPurchased = $p['purchased_items'];

            foreach($itemsPurchased as $pitem){
                $pitem['item_details'] = PurchasedItem::with('itemDetails', 'packageDetails')->where('purchase_id', '=', $pitem['purchase_id'])->get();
            }
            $p['supplier_details'] = $p['supplier_details'];
            $p['purchased_items'] = $pitem['item_details'];

            array_push($result, array($p));
        }
        return $result;
        //[0] added to remove []sqauare bracket
    }
0 голосов
/ 20 октября 2018

Это может помочь, я не проверял, но вы должны и дайте мне знать.

 public function getReport(){
    $purchases = Purchase::all;
    $result;

    foreach($purchases as $p){

      $itemsPurchased = $p->purchasedItems;
        foreach($itemsPurchased as $pitem){
            $pitem['item_details'] = $pitem->YOUR.FUNCTION.NAME.FOR.ITEM.DETAILS.
        }

      $p['purchased_items'] = $itemsPurchased;
      $p['supplier_details'] = $p->supplierDetails;
      $result = array($p);

    }

   return $result;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...