如何在Laravel资源控制器中使用子模型返回belongsTo模型的一个属性

时间:2014-10-10 01:16:13

标签: php rest laravel-4 relationship

我使用Laravel作为SPA的REST API。我有一种家庭有多种贡献的关系。贡献表具有对家庭id的外键引用。我可以调用hasMany / belongsTo设置的贡献路由,并且每个贡献都会获得它所属的整个家族模型。但我不需要所有这些数据,我只需要家庭表中的一个字段(不是id,但是不同的字段),每个贡献。

以下是我的模型和资源控制器:

class Family extends Eloquent {

    protected $table = 'families';

    // relationships
    public function contributions() {
        return $this->hasMany('Contribution');
    }
}

class Contribution extends Eloquent {

    protected $table = 'contributions';

    // relationships
    public function family() {
        return $this->belongsTo('Family');
    }

    public function other_field() {
        return $this->belongsTo('Family')->select('other_field');
    }   
}

class ContributionController extends BaseController {

    public function index()
    {
        // works - but returns the entire family with every contribution
        $contributions = Contribution::with('family')->get();

        // returns other_field == null with every contribution
        $contributions = Contribution::with('other_field')->get();

        return Response::json($contributions->toArray(),
            200);
    }

从belongsTo关系中选择此单个字段我出错了什么?

1 个答案:

答案 0 :(得分:0)

如果您使用预先加载,则可以对关系使用查询约束。

Family::with(['contributions', function($query)
{
    $query->select('column');
}])->get();