簡體   English   中英

Laravel返回帶有嵌套的對象

[英]Laravel return object with nesting

假設以下模型:

class Character extends Model
{
    protected $fillable = ['items'];
    protected $guarded = ['id'];

    public function items(){
        return $this->hasMany("App\Item");
    }
}

class Item extends Model
{

    public function character(){
        return $this->belongsTo("App\Character");
    }

}

發出請求后,控制器將執行以下操作:

public function getCharacter(Request $request, $characterID = 0){

        $characters = array(Character::find($characterID));

        foreach($characters as $key => $value){
            //ADD THE ITEMS
            $characters[$key]->items = $characters[$key]->items;
        }
        return $characters;
    }

------ 這很好。
我得到一個帶有成員“ items”的字符json,該成員包含相應項目模型的所有數據。

但是 ,假定Items不屬於Character而是ItemPackage 具體而言, Items屬於ItemPackageItemPackage有許多Items )和ItemPackage屬於CharacterCharacter有許多ItemPackage (S))

以類似的方式,我嘗試在控制器中執行以下操作,但不起作用。

....
foreach($characters as $key => $value){
    //ADD THE ITEM
    $characters[$key]->itemPackages = $characters[$key]->itemPackages
    //the above line works but we also need to add the item obj data so:
        foreach($characters[$key]->itemPackages as $key2){
            $characters[$key]->itemPackages[$key]->arrayOfItems = "whatever here";
        }
    }
....

具體來說,我得到的錯誤是:未定義的偏移量:1.我顯然不了解運行良好的數據結構,也許有人可以照亮我。

感謝您抽出寶貴的時間

一個解決方案是:

$characters = Character::with('itemPackages')->with("itemPackages.items")->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM