【问题标题】:How to add a hardcoded record to query result set in Laravel如何在 Laravel 中向查询结果集添加硬编码记录
【发布时间】:2018-07-09 19:17:48
【问题描述】:

我有 BookController,它与作者和出版商表有关系。

我需要动态添加一个出版商记录,在代码中硬编码,这将显示为该书的二级出版商。这是我需要使用的默认设置。

我不确定在 Laravel 中 bookController 是如何做到这一点的?

【问题讨论】:

  • 你能根据你的想法介绍你到目前为止所做的事情吗?

标签: php laravel


【解决方案1】:

所以你是说一本书有(至少)两个出版商?在这种情况下,您可以像这样设置您的关系:

出版商 |米 ------米 | 书籍 |米----1 | 作者

然后在将publisher A 添加到一本书时,您添加了publisher A 以及publisher Z(“硬编码”)。因此,当您需要向出版商查询一本书时,只需返回:

$book = App\book::find(1);
$book->publishers;

【讨论】:

  • 感谢 HCK。但是如何将出版商添加到书中?抱歉,我正在尝试编辑其他人编写的代码,我需要在代码中找到我可能需要进行更改的位置。
  • 在我的示例中,图书与出版商是多对多的关系,您可以使用 saveMany() 方法将许多 Publisher 对象与 Book 关联起来。检查docs
  • 或分享一些您遇到问题的代码。
【解决方案2】:

将此添加到您的图书模型中:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 2017-06-24
    • 2018-08-28
    • 2012-01-10
    • 2019-02-05
    • 2017-07-03
    • 2022-01-16
    • 2013-03-10
    相关资源
    最近更新 更多