当我尝试此错误时出现以下错误:调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: select() 运行这个:
Portfolio::find($id)->transactions
->select('id','date','symbol','transaction_type','qty','amount');
但这很有效。
Portfolio::find($id)->transactions
我的投资组合模型与
有关系$this->hasMany('Transaction','portfolio_id');
现在谈到真正的问题。如何使用预先加载从事务表中选择某些字段?或者我是否需要使用查询构建器
来执行此操作答案 0 :(得分:1)
你可以试试这个:
$portfolio = Portfolio::with(array('transactions' => function($q){
$q->select(array('id','date','symbol','transaction_type','qty','amount'));
}))->whereId($id)->first();
这会返回Portfolio
模型以及相关的transactions
,您可以使用以下内容:
$portfolio->transactions->first()->amount
另外,你可以循环它们。但是下面将只给出相关模型:
Portfolio::find($id)->transactions()
->get(array('id','date','symbol','transaction_type','qty','amount'));
在documentation上查看有关eager loading
的更多信息。
答案 1 :(得分:0)
您需要使用get
代替select
。如果只想从数据库中选择某些特定字段,则可以将数组传递给get
方法,如下例所示:
Portfolio::find($id)->transactions()
->get(array('id','date','symbol','transaction_type','qty','amount'));