【发布时间】:2018-07-09 19:17:48
【问题描述】:
我有 BookController,它与作者和出版商表有关系。
我需要动态添加一个出版商记录,在代码中硬编码,这将显示为该书的二级出版商。这是我需要使用的默认设置。
我不确定在 Laravel 中 bookController 是如何做到这一点的?
【问题讨论】:
-
你能根据你的想法介绍你到目前为止所做的事情吗?
我有 BookController,它与作者和出版商表有关系。
我需要动态添加一个出版商记录,在代码中硬编码,这将显示为该书的二级出版商。这是我需要使用的默认设置。
我不确定在 Laravel 中 bookController 是如何做到这一点的?
【问题讨论】:
所以你是说一本书有(至少)两个出版商?在这种情况下,您可以像这样设置您的关系:
出版商 |米 ------米 | 书籍 |米----1 | 作者
然后在将publisher A 添加到一本书时,您添加了publisher A 以及publisher Z(“硬编码”)。因此,当您需要向出版商查询一本书时,只需返回:
$book = App\book::find(1);
$book->publishers;
【讨论】:
saveMany() 方法将许多 Publisher 对象与 Book 关联起来。检查docs。
将此添加到您的图书模型中:
public function getPublishersAttribute()
{
$publishers= $this->publishers()->get(); // call the relationship and get collection
$new_publisher = new Publisher(); // create a new hardcoded publisher and set the data without saving
return $publishers->add($new_publisher);
}
现在您可以通过以下方式获取发布者集合(加上硬编码的发布者):$book->publishers;
【讨论】: