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();
你应该清楚地解释你想要实现什么。你应该清楚地解释你想要实现什么。