Laravel 4 - 如何从集合中的每个项目获取外表中的数据

时间:2014-11-12 22:08:03

标签: php laravel laravel-4 relationship

我有一个StandardOverall表,其中包含以下列:

sto_id | sto_transaction_id | sto_standard_id | sto_count | sto_total

以及包含以下列的Standard表:

std_standards_id | std_code | std_description | std_notes
sto_standard_id表中的

StandardOverallstd_standards_id表中Standard的外键。

我返回StandardOverall表中属于sto_transaction_id的所有行。如何从外表中返回数据,所有这些都在一个集合中?此代码位于控制器中:

$transactionID = Session::get('transactionID');
$standardStats = StandardOverall::whereID($transactionID)->get();

StandardOverall模型:

class StandardOverall extends Eloquent {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'sto_stat_overall';
    protected $primaryKey = 'sto_id';


    public function Standards() {
        return  $this->belongsTo('Standards');
    }

    public function getStandards() {
        return $this->hasOne('Standards', 'std_standards_id', 'sto_standard_id')->with('std_description');
    }

    public function scopewhereID($query, $transactionID) {
         return $query->where('sto_transaction_id', $transactionID);
    }
}

所以我想要标准整体表中的count和total列以及标准表中的链接代码和描述。这可能吗?

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

$transactionID = Session::get('transactionID');

$standardStats = StandardOverall::with(['standards' => function($query) {

    $query->select(
       'std_standards_id', 'std_code', 'std_description', DB::raw('count(*) as count')
    )->groupBy('std_standards_id');

}])->whereID($transactionID)->get();