[英]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.