繁体   English   中英

Laravel:一对多关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM