Laravel 5 Eloquent join 2 table got 属性 [tradeHistories] 在此集合实例上不存在

Laravel 5 Eloquent join 2 table got Property [tradeHistories] does not exist on this collection instance

我这里有一个问题,我不知道为什么会这样,因为我完全按照 youtube 上的教程进行操作。

这是问题所在:

Account.php

#region Relationship: one to many
public function tradeHistories() {
    return $this->hasMany('App\TradeHistory');
}
#endregion

TradeHistory.php

#region Relationship: one to many (reversed)
public function account() {
    return $this->belongsTo('App\Account');
}
#endregion

AccountsController.php

public function index()
{
    $accounts = Account::all();
    dd($accounts->tradeHistories);
    return view('pages.account.index')
            ->with('active', 'account')
            ->with('accounts', $accounts);
}

在 returns 我收到了这条消息

"Property [tradeHistories] does not exist on this collection instance."

为什么我会收到那条消息?因为我想显示所有账户的所有交易历史。

这是因为 $accounts 是一个帐户集合,所以集合中的每个单独项目都可以访问 tradeHistories。例如第一项:

$accounts = Account::all();
dd($accounts->first()->tradeHistories);

或循环所有项目,每个项目都可以访问它:

foreach ( $accounts as $account ) {
    dd($account->tradeHistories);
}

我建议预先加载 tradeHistories,这样每个帐户项目就不会进行额外的查询:$accounts = Account::with('tradeHistories')->get();.