雄辩的限制关系字段

时间:2017-02-20 19:59:34

标签: php laravel eloquent

我有以下关系:

TheEpisodeJob hasOne TheEpisode
TheEpisodeJob hasMany TheJobs

我使用此命令成功检索了数据库中所有字段(包括敏感信息)的所有TheEpisodesJobsTheSeriesEpisodes

$jobs = TheEpisodeJob::with('TheEpisode')->get();

我想限制仅针对此案例显示的TheEpisode字段(public $hidden无效)

修改

假设我只需要title中的descriptionTheEpisode字段。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

正如@Buglinjo指出的那样,你可以在热切加载时确定关系的范围,但是,如果您要这样做只选择特定列,则必须在select中包含相关列,以便{{1} }知道将相关数据附加到哪个模型。

这可以给你你想要的东西:

Eloquent

此外,如果你想要摆脱$jobs = TheEpisodeJob::with(['TheEpisode' => function ($query) { $query->select('jobID', 'title', 'description'); }])->get(); ,你可以做类似的事情:

jobID

希望这有帮助!

答案 1 :(得分:0)

据我了解,您希望根据更多参数限制结果。如果我是对的,您应该添加更多查询,例如:

->where, ->orwhere, ->select, ->whereNull

Here是更多查询的链接。希望它会有所帮助)

我看到了更新,所以你需要

->pluck('title', 'description');

有关更多信息,请转到上面的链接

答案 2 :(得分:0)

你应该这样做:

$jobs = TheEpisodeJob::with(['TheEpisode' => function($q){
    $q->get(['title', 'description']);
    //or
    $q->pluck('title', 'description');
}])->get();

注意:pluck的数组不是Eloquent Object。