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();
.
我这里有一个问题,我不知道为什么会这样,因为我完全按照 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();
.