Php 拉雷维尔:一对多关系

Php 拉雷维尔:一对多关系,php,laravel,model,Php,Laravel,Model,有这样一种结构: 有模型手册(book)和模型系统年限限制(Rars)。 一本书只能是一本rars,但在一本rars上可以引用很多书。也就是说,一对多的关系? 范本: class Book extends Model { public function rars() { return $this->belongsTo('App\Rars'); } } 模型Rars: class Rars extends Model { public fun

有这样一种结构:
有模型手册(
book
)和模型系统年限限制(
Rars
)。 一本书只能是一本rars,但在一本rars上可以引用很多书。也就是说,一对多的关系? 范本:

class Book extends Model
{
    public function rars()
    {
        return $this->belongsTo('App\Rars');
    }
}
模型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()

我做错了什么?

根据官方文档,要更新“属于”关系,您应该使用
关联
方法。
因此,我认为这将起作用:

$book->rars()->associate(\App\Rars::where('eternal_name', 'no_limits')->first());
$book->save();

有关更多信息,您可以在此处阅读,

根据官方文档,要更新“属于”关系,您应该使用
associate
方法。 因此,我认为这将起作用:

$book->rars()->associate(\App\Rars::where('eternal_name', 'no_limits')->first());
$book->save();

有关更多信息,请参阅此处,

不要尝试使用Book实例编辑RAR。请创建一个Rars实例。如果您有图书id,请执行以下操作

$book = new Book();
$book = $book->find($bookId);
$rars = new Rars();
$rars = $rars->find($book->rars_id);

/* Update data */

$rars->save();

不要试图用Book实例编辑RAR。请创建一个Rars实例。如果您有图书id,请执行以下操作

$book = new Book();
$book = $book->find($bookId);
$rars = new Rars();
$rars = $rars->find($book->rars_id);

/* Update data */

$rars->save();

你应该清楚地解释你想要实现什么。你应该清楚地解释你想要实现什么。