你好,我试着像这样在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);
}
}
答案 0 :(得分:3)
你有很多公司。这就是你从
获得一个集合的原因 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'));
答案 1 :(得分:0)
根据您的代码,您尝试从集合中访问集合是不可能的,您应该首先单独获取集合并执行您的过程
contentType: "application/json; charset=utf-8",
试试这个希望这会有所帮助..