![](/img/trans.png)
[英]laravel 5.3 : Undefined property: Illuminate\Database\Eloquent\Collection Error
[英]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.