簡體   English   中英

PHP錯誤:未定義的屬性:Illuminate \\ Database \\ Eloquent \\ Collection :: $ retails

[英]PHP error: Undefined property: Illuminate\Database\Eloquent\Collection::$retails

您好,我正在嘗試像這樣在laravel上放置對象。

但是我遇到了這個錯誤。

PHP error:  Undefined property: Illuminate\Database\Eloquent\Collection::$retails on line 18

這也是我的代碼。

public function index(){
        $retails = Auth::user()->companies->retails->all();


        return view('retails/retails', compact('retails'));
    }

公司模式

class Company extends Model
{
    public function retails(){
        $this->hasMany(Retail::class);
    }
}

零售模式

class Retail extends Model
{
    public function company(){
    return $this->belongsTo(Company::class);
    }
}

你有很多公司。 這就是為什么您從

Auth::user()->companies

當從集合實例中調用->retails ,您會收到編寫的異常。

您必須渴望為公司加載零售,然后遍歷它們。

喜歡:

$u = auth()->user();
$u->load('companies.retails');

$userRetails = [];
$u->companies->each(function($company) use (&$userRetails) {
    $userRetails = array_merge($userRetails, $company->retails->toArray());
});

$userRetails = collect($userRetails);
return view('retails/retails', compact('userRetails'));

根據您的代碼,您正在嘗試從不可能的集合中訪問集合,您應該先單獨獲取一個集合並進行處理

public function index(){
    $companies = Auth::user()->companies;


    foreach($companies as $company) {
        $retails_arr[] = $company->retails;
    }

    $retails = collect($retails_arr); // Gives Collection or
    // Or if you want to send array, try this
    $retails = $retails_arr; // Gives Array


    return view('retails/retails', compact('retails'));
}

嘗試一下,希望對您有所幫助。

暫無
暫無

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

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