[英]Laravel: one to many relationship
有这样的结构:
有一个模型书( Book
)和模型系统年龄限制( Rars
)。 一本书只能是一本书,但一本书可以参考很多书。 也就是说,这种关系-一对多? 样板书:
class Book extends Model
{
public function rars()
{
return $this->belongsTo('App\Rars');
}
}
模型拉尔斯:
class Rars extends Model
{
public function books()
{
return $this->hasMany('App\Book');
}
}
在迁移书中:
$table->integer('rars_id');
$table->foreign('rars_id')->references('id')->on('rars');
运行代码:
$book->rars()->save(\App\Rars::where('eternal_name', 'no_limits')->first());
(Rars with this eternal_name, guaranteed to exist)
并返回:
[BadMethodCallException]
Call to undefined method Illuminate\Database\Query\Builder::save()
我究竟做错了什么?
根据官方文档,要更新“属于”关系,应使用associate
方法。 所以我认为这会工作:
$book->rars()->associate(\App\Rars::where('eternal_name', 'no_limits')->first());
$book->save();
有关更多信息,您可以在这里阅读: https://laravel.com/docs/5.1/eloquent-relationships#inserting-related-models
不要尝试使用Book实例编辑Rars。 改为创建Rars的实例。 如果您有书号,请执行以下操作。
$book = new Book();
$book = $book->find($bookId);
$rars = new Rars();
$rars = $rars->find($book->rars_id);
/* Update data */
$rars->save();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.