【发布时间】:2015-10-13 23:42:18
【问题描述】:
通过构建股票投资组合应用来学习 Laravel。拥有用户、账户、股票、期权和交易的模型。我相信我已经正确建立了关系。
问题是我如何获得用户->帐户->交易。我确信我可以在查询生成器中做一些事情,但我希望有一种更“雄辩”的方法。
用户
public function accounts()
{
return $this->hasMany('App\Account');
}
public function stocks()
{
return $this->belongsToMany('App\Stock');
}
public function options()
{
return $this->belongsToMany('App\Option');
}
public function transactions()
{
return $this->hasMany('App\Transaction');
}
帐户
class Account extends Model
{
protected $fillable =
[
'name',
'broker'
];
public function user()
{
return $this->belongsTo('App\User');
}
public function stocks()
{
return $this->belongsToMany('App\Stock');
}
public function options()
{
return $this->belongsToMany('App\Option');
}
public function transactions()
{
return $this->hasMany('App\Transaction');
}
交易
class Transaction extends Model
{
protected $fillable =
[
'type',
'account_id',
'transaction_date',
'quantity',
'stock_id',
'option_id',
'amount',
'description'
];
public function user()
{
return $this->belongsTo('App\User');
}
public function stock()
{
return $this->belongsTo('App\Stock');
}
public function option()
{
return $this->belongsTo('App\Option');
}
public function account()
{
return $this->belongsTo('App\Account');
}
public function accounts()
{
return $this->hasManyThrough('App\Account', 'App\User');
}
}
最终,我想我会寻找用户可能拥有的每个帐户的总金额。 (用户可以有很多账户,每个账户会有很多交易、股票和期权。)
感谢您的帮助,或者至少让我知道我是否走在正确的道路上!!
【问题讨论】:
-
查询构建器方法似乎是要走的路。否则,您最终会将每个
Transaction对象加载到内存中,而您真正需要的只是每个帐户的聚合值。 -
我有点害怕。这个想法是有一个页面列出所有用户的单独帐户和余额,然后单击该帐户以打开一个列出所有交易的页面。对于特定的股票也是如此。您可以看到一个用户的股票总量,然后按账户拆分,然后在每个单独的账户中列出涉及该股票的交易列表。
标签: laravel eloquent relationships