[英]Laravel querying model relations
我仍在为laravel模型而苦苦挣扎。 最初,我尝试使用表来完成所有操作,但这并不明智,我会错过许多laravel函数。
我有以下设置
我想要的是? 要使用laravel模型关系获取每个日期( DATE(datetime)
)的状态,转发和回复的计数。
这些是模型。
class ProjectTwitterStatus extends Eloquent {
protected $table = 'project_twitter_statuses';
protected $softDelete = true;
public function twitterStatus() {
return $this->belongsTo('TwitterStatus');
}
public function project() {
return $this->belongsTo('Project');
}
}
class TwitterStatus extends Eloquent {
protected $table = 'twitter_statuses';
public function twitterRetweet() {
return $this->hasMany('TwitterRetweet');
}
public function twitterReply() {
return $this->hasMany('TwitterReply');
}
public function twitterUser() {
return $this->belongsTo('TwitterUser');
}
public function projectTwitterStatus() {
return $this->hasMany('ProjectTwitterStatus');
}
}
class TwitterRetweet extends Eloquent {
protected $table = 'twitter_retweets';
public function twitterStatus() {
return $this->belongsTo('TwitterStatus');
}
}
class TwitterReply extends Eloquent {
protected $table = 'twitter_replies';
public function twitterStatus() {
return $this->belongsTo('TwitterStatus');
}
}
我使用以下方法获取了twitterStatuses的计数:
$twitterStatuses = TwitterStatus::has('projectTwitterStatus')
->groupBy(DB::raw('DATE(datetime)'))
->get(array(DB::raw('COUNT(id) AS tweets'),DB::raw('DATE(datetime) AS date')));
我尝试例如这样做来添加添加的转发数量,但没有效果(对对象-> array()中的模型apears的引用。
$twitterStatuses = TwitterStatus::has('projectTwitterStatus')
->with(array('twitterRetweet' => function($query)
{
$query->count();
}))
->groupBy(DB::raw('DATE(datetime)'))
->take(10)
->get(array(DB::raw('COUNT(id) AS tweets'),DB::raw('DATE(datetime) AS date')));
谁能指出我正确的方向?
不能100%确定您打算使用的解决方案的方式-假设您只是想计算与twitterStatus相关的转发数量?
$count = $twitterStatus->twitterRetweet()->count();
其中$twitterStatus
是已检索的模型-不是集合。
如果$twitterStatus
是一个要迭代的集合,您也可以使用with()
或load()
来加载相关模型
然后,您可以遍历集合中的每个模型-取决于您要如何使用结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.