获取并更新Eloquent中的最新相关模型

时间:2016-08-27 15:20:19

标签: php laravel eloquent laravel-5.2 relationship

我一直关注this article并为这些模特做好准备:

class Topic extends Node{
    public function section(){
        return $this->hasOne('App\Section')->latest();
    }
    public function allSections(){
        return $this->hasMany('App\Section');
    }
}
class Section extends Model
{
    public function topic(){
        return $this->belongsTo('App\Topic');
    }
}

当我使用预先加载查询数据时,结果符合预期,即每个主题,只返回一个部分(最新)。< / p>

Topic::with('section')
   ->where('id', $id)
   ->get(); //returns one section for each topic

然而,当我这样查询时:

$section = $topic->section()->get(); //returns many

它会返回所有部分。同样,当我尝试update时,它会更新所有部分:

$topic->section()->update([
   'content'   => $input['section']
]); // updates many

如何将update仅提供给最新/预期的?

1 个答案:

答案 0 :(得分:0)

你做错了。试试这个:

$topic->section->update([
   'content'   => $input['section']
]);