PHP错误:未定义属性:Illuminate \ Database \ Eloquent \ Collection :: $ retails

时间:2016-11-09 10:48:37

标签: php laravel laravel-5

你好,我试着像这样在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);
    }
}

2 个答案:

答案 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",

试试这个希望这会有所帮助..