php – Laravel attach()方法不适用于hasMany方面

前端之家收集整理的这篇文章主要介绍了php – Laravel attach()方法不适用于hasMany方面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
该应用程序有以下模型:

Atividade.PHP

class Atividade extends Eloquent {
    public function intervencoes() {
        return $this->belongsToMany('Intervencao');
    }
}

Intervencao.PHP

class Intervencao extends Eloquent {
    public function atividades() {
        return $this->hasMany('Atividade');
    }
}

以下代码有效:

Atividade::find($id)->intervencoes()->attach($intervencao_id);

但是这个…

Intervencao::find($id)->atividades()->attach($atividade_id);

返回BadMethodCallException:

Call to undefined method Illuminate\Database\Query\Builder::attach()

解决方案(感谢@gnack):

我试图建立一个多对多的关系,所以只需要改变这个……

return $this->hasMany('Atividade');

对此:

return $this->belongsToMany('Atividade');
请参阅Laravel文档:
http://laravel.com/docs/eloquent#inserting-related-models

基本上,您为相同的两个表设置了两种不同类型的关系 – 您已经设置了多对多和一对多.看起来你可能想要多对多,所以你需要改变这一行:

return $this->hasMany('Atividade');

对此:

return $this->belongsToMany('Atividade');

这将把关系设置为多对多关系,然后支持attach()方法.

attach()方法仅适用于多对多,对于其他关系,还有save()或saveMany()和associate()(请参阅上面链接的文档).

猜你在找的Laravel相关文章